GDB corefile не видит параметры функции

Мое приложение аварийно завершилось из-за неисследованного исключения (мой код на С ++ выдает необработанное исключение при определенных условиях). Я пытаюсь GDB corefile. Бинарная библиотека «не полосатая». И трассировка стека показывает функцию (мой код), из которой генерируется неперехваченное исключение, но когда я пытаюсь вывести аргументы функции, я всегда получаю «без символа xxx в текущем контексте». Аргументы info также возвращают «Информация о таблице символов недоступна».

Может кто-нибудь пролить свет почему? это из-за необработанного исключения, которое раскручивает / повреждает стек?

Спасибо,
Фрэнк

0

Решение

В вашем бинарном файле отсутствует отладочная информация.

Если вы построили его с gccи хочу отладить core у вас уже есть (например, если трудно воспроизвести сбой), вы может быть в состоянии оправиться от этого, перестроив двоичный файл с именно так тот же источник и командные строки, добавив -g компилировать и связывать команды. (Примечание: вы должен использовать те же строки компиляции; замена -O2 с -g не будет делать.)

Если сбой не сложно воспроизвести, просто перестройте двоичный файл с помощью -g -O0запустите его под GDB и наслаждайтесь «легкой» отладкой.

Бинарная библиотека «не полосатая».

Это не значит, что вы думаете, что это значит. Не зачеркнутый означает, что таблица символов все еще присутствует в двоичном файле.

GDB будет читать эту таблицу символов и использовать ее для сопоставления диапазонов адресов с именами функций.

Но чтобы восстановить имена и значения локальных переменных и параметров, вы должен компилировать с отладочной информацией (что к чему -g флаг делает для большинства компиляторов).

1

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

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

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