1
我有一些調試代碼,如果在運行GBD時運行應該會中斷應用程序的執行,但是如果GDB沒有運行,它應該繼續。如果gdb已連接,我該如何中斷?如果不是,請繼續?
我正在使用的代碼在結構是這樣的:
try
{
if(some_complex_expression)
{
gdb_should_break_here();
do_some_stuff();
throw MyException();
}
}
catch(const MyException & e)
{
handle_exception_and_continue();
}
我應該gdb_should_break_here是什麼?
是的,這可能是最簡單的方法。在某些時候,您可能會發現將日誌記錄代碼放在那裏很有用。此外,即使您正在優化代碼,只要gdb_should_break_here的實現位於單獨的文件中,並且將其分別鏈接到最終的應用程序中,它仍將被調用(儘管爲空),因此GDB可以打破它。 – 2010-03-17 05:39:51
是的不幸的是,這些功能是頭只庫的一部分。 我正在查看的代碼基本上是錯誤日誌記錄和處理代碼的一部分,因此更多的日誌記錄可能不適用。它僅用於調試罕見邊緣情況 - 特別是在需要堆棧跟蹤的情況下。 – 2010-03-17 07:02:29