所以我对编码比较陌生,所以请原谅不恰当的词汇。我基本上想做的是为GDB创建一个脚本,或者在GDB中输入命令,这样它就可以一遍又一遍地使用测试用例的输入文件运行我的代码。基本上,我现在正在做一个项目,它大量使用信号量和互斥量,并且在某个地方,每隔一次,我的代码就会因为竞态条件而中断。如果我可以让gdb连续运行我的测试用例,直到我的代码达到seg错误,这将是最理想的。
PS-请具体说明我必须做什么,我不太擅长剖析有沉重技术答案的答案。
谢谢!
发布于 2013-06-09 11:38:14
最简单的解决方案是expect脚本。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
}
}发布于 2015-06-22 17:21:07
您可以使用GDB脚本来自动化GDB sessions.The,GDB宏编码语言由gdb命令、基本循环语句和条件语句组成。
你可以在这里找到关于它的信息
http://www.adacore.com/adaanswers/gems/gem-119-gdb-scripting-part-1/
https://stackoverflow.com/questions/17005293
复制相似问题