【问题标题】:GDB test scriptGDB 测试脚本
【发布时间】:2013-06-09 00:37:03
【问题描述】:

所以我对编码比较陌生,所以请原谅不恰当的词汇。我基本上想做的是为 GDB 创建一个脚本,或者可能将命令输入到 GDB 中,以便它可以使用测试用例的输入文件一遍又一遍地运行我的代码。基本上,我现在正在开展一个项目,该项目大量使用信号量和互斥锁,并且在某个地方,每一次在蓝月亮,我的代码由于竞争条件而中断。如果我可以让 gdb 连续运行我的测试用例,直到我的代码遇到段错误,这将是理想的。

PS- 请具体说明我必须做什么,我不擅长剖析具有大量技术性答案的答案。

谢谢!

【问题讨论】:

    标签: gdb mutex semaphore


    【解决方案1】:

    最简单的解决方案是期望脚本。 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
    }
    
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用 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?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多