2013-08-18 82 views
0

所以我试图调试代码。但由于某种原因,它没有通过我所需要的部分。调用这段代码的控制变量是一个指针“* sret”。我尝试了很多,但没有运气。它是一个C程序。有没有办法让一个观察点附加在变量上?因为它不会识别变量......但它能识别文件。将totalview调试器附加到变量

回答

0

@Ban,

如果您使用的是TotalView调试器,那么这是一个很好的问题。是的,我们确实提供观察点。但是,它们设置在内存位置,而不是变量。这个区别很重要,因为如果你想象一个递归调用的函数和该函数中的局部变量X.你可以运行该程序到该功能,在X上潜水并设置一个观察点。如果X的特定实例(指向堆栈中的内存位置)被写入,则观察点将触发。例如,如果函数再次调用自己(这有效地在堆栈中的不同位置创建一个新的,不同的X),并且第二个X被写入,我们不会停止。

其他一些功能,你可能会发现有用:

  • 您可以在调试器中直接设置的变量的值。您可以使用它来验证如果变量具有“正确”值,程序将按照您的预期行事。

  • 您可以通过指令逐步执行指令,使其指向您希望它决定沿着您正在寻找的代码路径的程序部分。显示源代码和汇编代码对于这种调试非常有用。

  • 如果您在linux-x86-64平台上,您可能会发现ReplayEngine功能很有用。这可以让你通过程序向前和向后运行 - 这可能会帮助你真正缩小发生的情况,以防止你的程序做你想做的事情。

让我知道你如何继续调试这个问题。如果您以其他方式找到您的解决方案,我也会对此感到好奇。

祝你好运!

克里斯Gottbrath

首席产品经理TotalView软件在Rogue Wave的软件

电子邮件:去年在roguewave点com第一点