отладка — ловите исключения C ++ в AIX с помощью dbx

У меня есть приложение C ++, которое заканчивается сообщением об ошибке «неправильное размещение» для определенных входных данных на компьютере AIX.

Есть ли способ запустить программу в dbx и перехватить исключение при его запуске? Я ничего не вижу в документации IBM.

2

Решение

Если ваше приложение 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 вызывается при возникновении исключения, поэтому из стека вызовов видно, что исключение было выброшено из строки 4 исходного файла throw.C

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]