[其他] 求教: C++ 调试时,参数跟踪问题-把问题重又解释了一下

重新解释一下:
在程序运行时,我想跟踪某一个参数的变化过程。比如全局变量x初始值是0.1,该参数被子程序A,B,C,D,E,等多次调用, 其过程中该值也在变化。 我只想跟踪一下这个参数的运行路径和参数变化过程。 这样说,是否表达清楚了呢? 我知道有这种功能,可是不会阿

如果把程序完整运行一次,在下面的debug里是可以看到这个参数的情况,可是那耗时太久了,觉得这种方法不可取。

我用的是Visual studio。



多谢楼下各位答复!

[ 本帖最后由 snowgirl 于 2008-1-11 10:05 编辑 ]
人在天涯,心系祖国!
Share |
Share

也许我永远到不了彩虹天堂,但那会是我最真实的梦!

TOP

vc++ 在分步调试的过程中,应该会在窗口下方显示所存在变量的值吧。
nie aufgeben!

TOP

LZ,要看你在什么样的环境下调试你的C++代码。

1. Unix/Linux 工具下可以使用比如:DDD调试工具,设定你需要的参数可以进行跟踪。
2. Visual Studio 环境下就更方便了,Debug的每一步都可以看你需要的参数数值的变化。

希望以上信息对你有所帮助。
全球化的思维和视野。
千里之行,始于足下

TOP

多谢楼上各位!

还是没弄出来
人在天涯,心系祖国!

TOP

请问什么叫观察参数的运行路径?Visual Studio里面集成的Debugger在设置断点的时候是可以设置条件的,比如当某参数值大于特定值时才停止运行,这样可以免掉每次守着断点看参数的当前值。

另外还有给Visual Studio的Profiler,它可以完成一些Debugger完成不了的功能,比如统计在整个程序运行过程中,一个while-loop运行了多少次等等。我觉得你说的功能可能可以由某个Profiler实现,但Visual Studio的Profiler不是集成的,也不是微软开发的,要另外去买许可证。

TOP

比如,程序大致运行顺序 如下

Subrutine  A      
Subrutine  B      调用参数x并重新赋值
Subrutine  C
Subrutine  D      调用参数x并重新赋值
Subrutine  F
Subrutine  C
Subrutine  D      调用参数x并重新赋值
......
Subrutine  M
Subrutine  P      调用参数x并重新赋值
end

不需要考虑子程序实际运行顺序,只要我能直接清楚地看到参数x走到Subrutine B,然后到 Subrutine D, 然后又Subrutine D.....P,就可以了.

其实是想跟踪该参数在程序中的被调用情况和数值变化情况。
人在天涯,心系祖国!

TOP

一个可能比较笨的办法,在你调用x的后面加一个输出个语句,包含需要的信息及提示,然后DEBUG时在菜单View --> Output里面观察。再好一点就是直接把输出信息存到文件里。等测完了在把这些附加的CODE删除掉。

TOP

看到另外一种,在你要调用那个变量上 Insert tracepoint (就在insert breakpoint 下面),然后在打开的窗口 Print a message 写入你需要的信息,这里可以把function的名称都掉出来,debug时就可以在output窗口观察了。只是好像每一个调用这个变量的语句都要加这么一个tracepoint。

[ 本帖最后由 m2p 于 2008-1-11 16:37 编辑 ]

TOP

用#ifdef进行条件编译,正式版本时不编译就行了。

TOP