我使用g ++一個簡單的測試程序編譯:計劃在gdb下凍結時發生異常
int main()
{
try
{
printf("before\n");
throw 1;
}
catch(int i)
{
printf("catched int\n");
}
catch(...)
{
printf("catched(...)\n");
}
}
通常工作正常使用或不調試信息包括在內。 但是當用gdb調試時,它總是掛在「throw 1;」上所以我無法調試程序,通常會拋出異常。 從調試器的最後一個信息是:
Catchpoint 1 (exception thrown), 0x00007ffff7b8f9e0 in __cxa_throw() from /usr/lib/libstdc++.so.6
我的編譯和鏈接選項:
g++ -Wshadow -Wunreachable-code -Wswitch-enum -Wswitch-default -Wextra -Wall -pg -g -m64 -c main.cpp
g++ -o exec/exception_problem obj/main.o -pg
我的環境: 的Ubuntu 10.10,64位; g ++/gcc 4.4.5; gdb 7.2; 在codeblocks下調試svn rev 7440
任何想法是什麼問題?
附加信息: GDB日誌的最後兩行分別是:
Catchpoint 1 (exception thrown), 0x00007ffff7b8f9e0 in __cxa_throw() from /usr/lib/libstdc++.so.6
>>>>>>cb_gdb:
在日誌中的最後一個字符是冒號。 gdb的命令行:
/usr/bin/gdb -nx -fullname -quiet -args exec/exception_problem
我沒有發現我的家目錄中的所有* gdbinit *;全球gdbinit是空的。代碼塊是否可能準備特定的gdbinit並將其放到gdb中?
最好的問候。
它是如何「掛」到的?你有(gdb)提示嗎?如果按Ctrl + C或Ctrl + Z,會發生什麼情況? – themel
Ctrl + C關閉程序和終端窗口,但condeblocks中的調試會話仍處於活動狀態(調試日誌中沒有新的信息)。之後,我可以通過停止按鈕正常結束會話。 – ardabro