2013-06-09 4 views
1

Итак, я относительно новичок в кодировании, поэтому, пожалуйста, простите неправильный словарный запас. То, что я в основном пытаюсь сделать, это создать скрипт или, возможно, ввести команды в GDB, чтобы он мог снова и снова запускать мой код с входным файлом тестового примера. В принципе, сейчас я работаю над проектом, который сильно использует семафоры и мьютексы, а где-то, каждый раз в синей луне, мой код ломается из-за условий гонки. Если бы я мог gdb постоянно запускать тестовый файл, пока мой код не достигнет ошибки seg, это было бы идеально.Сценарий сценария GDB

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

Спасибо!

ответ

0

Простейшим решением является сценарий ожидания. Expect - это программа для автоматизации взаимодействия с программами, которые предоставляют интерфейс текстового терминала.

Примеры доступны в http://en.wikipedia.org/wiki/Expect

Сценарий должен быть как

#!/usr/bin/expect 

# start gdb 
spawn gdb yourprogram 

while {1} { 

# wait for gdb to start, expect the (gdb) to appear 
expect "(gdb)" 

# send command to run your program 
send "run your_args\n" 

expect { 
    "Program exited normally." {continue} # just run again 
    "(Some error message)"  {interact} # start to debug 
} 

} 
0

Вы можете использовать скрипты GDB для того, чтобы автоматизировать GDB sessions.The GDB макроязык кодирования состоит из БГД команд наряду с основным циклов и условных операторов.

Вы можете найти информацию об этом здесь

http://www.adacore.com/adaanswers/gems/gem-119-gdb-scripting-part-1/

What are the best ways to automate a GDB debugging session?

Смежные вопросы