2010-08-13 18 views
3

IM在gdb的一點點新手,所以在這裏不用任何堆棧:GDB給出了一個簡單的std :: string未捕獲的異常

進出口工作的CPP單元測試運行現在。我嘗試使用無效參數(如null_char)構造字符串對象,但程序預計會給出例外:)。當我嘗試使用gdb調試應用程序時,我在崩潰後鍵入bt,但它沒有給出消息。 任何想法爲什麼可能發生?提前致謝。

+1

你用'-g'編譯過嗎? – David 2010-08-13 08:16:05

+0

您是使用發行版還是調試版本來調試核心文件? – DumbCoder 2010-08-13 08:24:13

+0

我正在使用構建腳本,該腳本默認以調試模式構建項目。 – LostMohican 2010-08-13 11:31:51

回答

1

-g選項添加到您的編譯器命令行以添加調試符號。這對gdb有很大的幫助。

+1

和-O0也有幫助 - 有時優化會使調試中看到的代碼路徑相當「狂野」=) – rasjani 2010-08-13 08:58:00

+0

感謝您的提示,那太棒了! – 2010-08-13 09:21:57

+0

我一步一步地進入代碼,我認爲我處於調試模式,所以沒有我認爲的優化。 – LostMohican 2010-08-13 11:33:25

2

也許堆棧只是沒有用,因爲異常不會被捕獲?請注意gdb中的catchpoints:

catch throw 

在拋出異常時會中斷。

catch catch 

當發現異常時中止。