GDB测试脚本

时间:2013-06-09 00:37:03

标签: gdb mutex semaphore

所以我对编码比较新,所以请原谅不合适的词汇。我基本上要做的是为GDB创建一个脚本,或者可能在GDB中输入命令,这样它就可以反复运行我的代码和测试用例的输入文件。基本上,我正在开展一个项目,大量使用信号量和互斥量,在某个地方,每次在蓝色的月亮,我的代码因竞争条件而中断。如果我可以让gdb连续运行我的测试用例,直到我的代码达到seg错误,这将是理想的。

PS-请具体说明我必须做的事情,我不善于解析那些有重大技术答案的答案。

谢谢!

2 个答案:

答案 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/

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