Я всегда сталкиваюсь с падением gdb, когда пытаюсь напечатать определенно правильную структуру / переменную. И часто происходит сбой, если я пытаюсь вызвать другую функцию в GDB. Я обнаружил, что это может произойти, только если код смешан на C / C ++.
Например,
%> p anotherFunction()
Segmentation fault
Вот небольшой пример моего типичного сценария:
example.cc:
class foo(){
public void bar();
};
void foo::bar(){
int i=12345;
printf("%d", i);
}
foo * pfoo;
extern "C" call_foo(){
pfoo = new foo();
pfoo->bar();
}
в примере, если я остановлюсь на printf и попытаюсь выполнить «p i» в gdb, это приведет к сбою.
Обратите внимание, что это только пример, пожалуйста, не ищите ошибку в этом примере. Такой сбой происходит везде, но иногда все в порядке.
Полагаю, это потому, что я отлаживал из кода C (в нашем примере call_foo) в код C ++, и у gdb возникли проблемы с переключением контекста.
Пожалуйста, помогите, если у вас есть идеи. Это действительно сильно влияет на мою производительность: (....
Кстати, я уже пробовал другую версию GDB. Кажется, проблема существует в каждой версии, включая последнюю. И я также попытался очистить / valgrind, чтобы проверить мои программы, и я не увидел никаких ошибок с программой.