Как заставить LLDB выйти из успеха, ждать в случае неудачи? - PullRequest
0 голосов
/ 31 октября 2018

Это версия Clang:


При выполнении моего приложения много раз, программно, на большом количестве возможных входов, я иногда сталкивался с ошибкой сегментации.

Я бы хотел, чтобы каждый тестовый запуск выполнялся в lldb, чтобы я мог получить обратную трассировку для дальнейшей отладки. Если вызов завершается без сбоев, я бы хотел, чтобы lldb автоматически завершал работу, чтобы тестовая система переходила к следующей итерации. Таким образом, я могу отключить все это во время обеденного перерыва, и комплект может быть прерван только в случае сбоя.

Бонусные баллы за автоматическое завершение lldb во всех случаях, но сначала выведите обратную трассировку в случае сбоя программы.

В настоящее время я могу автоматизировать хотя бы начальную команду run:

lldb -o run -f $CMD -- $ARGS

1 Ответ

0 голосов
/ 31 октября 2018

У меня возникают трудности с поиском справочной информации о командах в сети, но похоже, что опция командной строки -batch даст вам базовое поведение "выход при успехе / приглашение при сбое".

Для возврата и при автоматическом выходе при сбое, я думаю, вам нужна опция --source-on-crash ...

-K <filename>  
--source-on-crash <filename>  
    When in batch mode, tells the debugger to source this file of lldb
    commands if the target crashes.

Итак, создайте командный файл с чем-то вроде ...

echo -e 'bt\nquit' > lldb.batch

, а затем вызвать как ...

lldb --batch -K lldb.batch -o run -f $CMD -- $ARGS
...