所以我对编码比较新,所以请原谅不合适的词汇。我基本上要做的是为GDB创建一个脚本,或者可能在GDB中输入命令,这样它就可以反复运行我的代码和测试用例的输入文件。基本上,我正在开展一个项目,大量使用信号量和互斥量,在某个地方,每次在蓝色的月亮,我的代码因竞争条件而中断。如果我可以让gdb连续运行我的测试用例,直到我的代码达到seg错误,这将是理想的。
PS-请具体说明我必须做的事情,我不善于解析那些有重大技术答案的答案。
谢谢!
答案 0 :(得分: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
}
}
答案 1 :(得分:0)
您可以使用GDB脚本来自动化您的GDB会话.GDB宏编码语言由gdb命令以及基本循环语句和条件语句组成。
您可以在此处找到有关它的信息
http://www.adacore.com/adaanswers/gems/gem-119-gdb-scripting-part-1/