Ответ 1
Обычно мы вызываем очень сонную команду (или любой другой инструмент отладки) с аргументами:
-
-O0
: устанавливает оптимизацию кода по умолчанию (более оптимизированный код, используемый для сокращения времени или пространства, может скрыть некоторые функции) -
-g
: он использовал для сохранения имени функций и переменной, которые по умолчанию искажены, чтобы оптимизировать исполняемый файл, но он делает его менее отлажимым: gcc -g: что произойдет -
-fno-omit-frame-pointer
: он также используется для улучшения отладки путем омминга указателей на рамки (функция, используемая для повышения производительности, но которая делает отладку менее удобочитаемой), в соответствии с Когда я должен опустить указатель рамки?. С этой опцией код сборок вывода более прост. Это помогает отладчику -
-gdwarf-2
: https://gcc.gnu.org/onlinedocs/gcc-3.4.5/gcc/Debugging-Options.html указывает, что он настроил принудительное форматирование выходного формата отладки на "dwarf2". Фактически, опция -g просто сообщает компилятору "сохранить некоторую информацию". gdwarf будет указывать формат вывода (если это возможно).
Вы также можете добавить -glevel
, чтобы указать точность выводимой информации. По умолчанию используется значение 2. Оно не сохраняет макросы и некоторые определения. Возможно, вы можете установить его на 3.
Если этого недостаточно, вы можете дать минимальный рабочий образец, чтобы увидеть точную проблему (какая функция должна появиться в журнале)?
Я надеюсь, что это поможет