выйти в .gdbinit

Я составил файл .gdbinit, содержащий команды, которые должен выполнить gdb:

file program
run arg1 arg2
bt
quit

Проблема в том, что quit успешно работает, если program дает сбой, и не работает, если program завершается успешно.

В любом случае мне нужно выполнить quit. Как исправить?


gdb
person Viesturs    schedule 14.07.2018    source источник


Ответы (1)


Проблема в том, что quit работает успешно, если программа дает сбой, и не работает, если программа завершается успешно.

Это связано с тем, что bt вызывает ошибку, если программа успешно завершена. Это вызывает No stack ошибку:

.gdbinit:3: Error in sourced command file:
No stack.

и последующие quit не выполняются из-за ошибки.

Вы можете использовать переменные $_isvoid и $_exitsignal, чтобы исправить свой скрипт .gdbinit:

file program
run arg1 arg2
if $_isvoid ($_exitsignal)
 echo The program has exited\n
 else
 echo The program has signalled\n
 bt
end
quit

См. документацию по удобным переменным.

person ks1322    schedule 16.07.2018
comment
В случае сбоя программы следующим образом Program received signal SIGSEGV, Segmentation fault. я получаю отчет The program has exited и никаких следов. - person Viesturs; 18.07.2018