所以我正在尝试调试代码。但由于某种原因,它没有通过我需要它的部分。调用该段代码的控制变量是指针“* sret”。我尝试了很多,但没有运气。它是一个C程序。有没有办法在变量上附加观察点?因为它不会识别变量......但它识别文件。
答案 0 :(得分:0)
@Ban,
如果您使用的是TotalView调试器,那么这是一个很好的问题。是的,我们提供观察点。但是,它们设置在内存位置,而不是变量。这种区别很重要,因为如果你想象一个递归调用自身的函数和该函数中的局部变量X.您可以将程序运行到该功能,在X上潜水并在其上设置观察点。如果写入特定的X实例(指向堆栈中的内存位置),则会触发观察点。例如,如果函数再次调用自身(它有效地在堆栈中的不同位置创建一个新的,不同的X)并且写入第二个X,我们将不会停止。
您可能会发现其他一些有用的功能:
您可以直接在调试器中设置变量的值。您可以使用它来验证如果变量具有“正确”值,程序将按预期运行。
您可以通过指令逐步指导您希望它应该决定沿着您正在寻找的代码路径进入的程序部分。显示源代码和汇编代码对于这种调试很有用。
如果您使用的是linux-x86-64平台,您可能会发现ReplayEngine功能非常有用。这使您可以在程序中向前和向后运行 - 这可以帮助您真正缩小正在发生的事情,以防止您的程序执行您想要的操作。
让我知道如何继续调试此问题。如果您以其他方式找到解决方案,我也会对此感到好奇。
祝你好运!Chris Gottbrath
Rogue Wave Software的TotalView首席产品经理
电子邮件:第一个点在roguewave dot com