当前位置:  开发笔记 > 运维 > 正文

跟踪变量自动变化

如何解决《跟踪变量自动变化》经验,为你挑选了1个好方法。

我正在调试一个C程序(Linux中的GCC和GDB以及Windows中的Visual Studio),它在两种不同的体系结构上提供不同的结果.我想通过跟踪存储在变量中的值的更改来比较每个体系结构的执行,以便找到差异.

file main.c, line 234. Variable A changes from 34 to 23
file main.c, line 236. Variable B changes from 0 to 2
.....
etc.

是否可以指示编译器检测此效果,而无需手动乱丢源printf语句?



1> frankc..:

我会写一个脚本来自动导航调试器.我不知道Windows上是否有预期(可能是),但它是编写自动驾驶交互式工具脚本的绝佳工具.该脚本将类似于:

#!/usr/bin/expect
set progname [lindex $argv 0]
spawn gdb $progname
expect "(gdb)"
send "break main\n"
expect "(gdb)"
send "run\n"
while 1 {
    expect {
    "(gdb)" {
        send "info locals\n"
        expect "(gdb)"
        send "next\n"
    }

"Program exited normally" {
    exit;
}
}

}

我会将"main"更改为您认为程序出错的函数.您还可以插入所需的任何其他调试器命令,例如在打印变量之前打印出您所在的行; 在这里我使用"信息本地"打印出所有本地值.显然,您需要将此输出保存到文件进行分析.Expect非常容易学习,语法都基于tcl.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有