2015-06-03 2 views
1

Я пытаюсь отладить параллельную программу в LLDB и получаю seg-ошибку, но не при каждом выполнении. Я хотел бы запустить мой процесс снова и снова, пока он не достигнет ошибки seg. До сих пор у меня есть следующие:Процесс перезапуска LLDB без ввода пользователем

b exit 
breakpoint com add 1 
Enter your debugger command(s). Type 'DONE' to end. 
> run 
> DONE 

ту часть, которую я нахожу раздражает, что когда я получаю к функции выхода и ударилась контрольную точку, когда команда run запускается на выполнение, я получаю следующее сообщение от LLDB :

There is a running process, kill it and restart?: [Y/n] 

Я хотел бы автоматически перезапустить процесс, без необходимости вручную вводить Y каждый раз. Кто-нибудь знает, как это сделать?

ответ

2

Вы можете убить предыдущий экземпляр вручную с помощью kill - который не запрашивает - тогда команда run также не будет запрашивать.

Или:

(lldb) settings set auto-confirm 1 

даст по умолчанию (капитализируются) ответ на все запросы lldb.

Или если у вас есть Xcode 6.x (или текущий ТОТ Svn lldb), вы можете использовать водителя lldb в пакетном режиме:

$ lldb --help 
... 
     -b 
     --batch 
      Tells the debugger to running the commands from -s, -S, -o & -O, 
      and then quit. However if any run command stopped due to a signal 
      or crash, the debugger will return to the interactive prompt at the 
      place of the crash. 

Так, например, вы могли бы сценарий этого в оболочке, выполнив команду:

lldb -b -o запустить

в цикле, и это остановится, если трасса заканчивается в аварии, а не нормальный выход. В некоторых случаях это может быть проще сделать.

+1

Отлично, каждое из этих решений - именно то, что я хотел. благодаря – Matt