我有一个C++应用程序,该应用程序以AIX机器上某些输入数据的“错误分配”错误消息结尾。
有没有一种方法可以在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行引发的。
关于c++ - 使用dbx在AIX上捕获C++异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20245255/