1
我有一個C++應用程序,它在AIX機器上以特定輸入數據的「錯誤分配」錯誤消息終止。使用dbx捕獲AIX上的C++異常
有沒有辦法在dbx中運行程序並在拋出異常時捕獲異常?在IBM的文檔中我沒有看到任何關於它的信息。
我有一個C++應用程序,它在AIX機器上以特定輸入數據的「錯誤分配」錯誤消息終止。使用dbx捕獲AIX上的C++異常
有沒有辦法在dbx中運行程序並在拋出異常時捕獲異常?在IBM的文檔中我沒有看到任何關於它的信息。
如果您的C++應用程序使用XL C/C++編譯,請在__DoThrowV6上設置一個斷點。當一個異常被拋出
$ cat throw.C
int foo(int x)
{
if (x < 0)
throw 99;
return x+1;
}
int main()
{
int y;
y = -5;
try
{
foo(y);
}
catch(...)
{
}
return 0;
}
$ xlC -g -o throw throw.C
$ dbx ./throw
Type 'help' for help.
reading symbolic information ...
(dbx) stop in __DoThrowV6
[1] stop in __DoThrowV6
(dbx) run
[1] stopped in __DoThrowV6 at 0xd1be7e00
0xd1be7e00 (__DoThrowV6) 7c0802a6 mflr r0
(dbx) where
__DoThrowV6() at 0xd1be7e00
foo(int)(x = -5), line 4 in "throw.C"
main(), line 14 in "throw.C"
(dbx)
__DoThrowV6被調用,所以從調用棧可以看到,這個例外是從源文件throw.C
非常感謝你的第4行拋出,它的作品!我知道它會是這樣的,但不知道該函數的名稱... __DoThrowV6不是一個易於猜測的名稱;-) – piokuc
我們的調試器具有GUI:(IBM Debugger for AIX,包含在XL C/C++ for AIX; IBM Rational Developer for AIX和Linux)都包含了更簡單的選項,以便在引發C++異常時停止調試對象。 –
我們如何運行'IBM Debugger for AIX' - 什麼是二進制文件? – JBRWilkinson