Я скомпилировал с g ++ простую тестовую программу:
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, 64bit;
g ++ / gcc 4.4.5;
GDB 7,2;
отлажен под кодовыми блоками 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?
С наилучшими пожеланиями для всех.