【发布时间】:2014-04-01 19:02:06
【问题描述】:
我正在调试一个旧的 C# 应用程序。有一个屏幕,我可以单击以对服务器运行查询并获取结果列表。
问题是我无法弄清楚结果是如何计算的。每个结果都有一个与之关联的浮点数,显示在屏幕上。为了便于讨论,假设第一个结果旁边的数字是 123.45。
我猜数字 123.45 必须在某个时候分配给浮点变量,但如果有数百万行代码,我还有很多工作要做!
因此,我想知道如果我确定数字 123.45 在某个时候被分配给了一个变量,是否有一些方便的方法可以找到它发生的位置以及它被分配给什么变量?有这样的调试工具吗?
编辑: 这里的评论者正确地指出我不确定该数字是否已分配给变量;我只是猜测它可能是。另外,我对在断点上设置条件很熟悉,但这在这里无济于事,因为要设置断点,您必须知道赋值发生在哪一行。
我的问题是,是否有办法检测在代码中的 unknown 位置分配给 unknown 变量的特定值。我想找到赋值发生的哪里,以及赋值给了哪个变量。
第二次编辑:让我们将其与使用 SQL 分析器进行比较。如果我知道值 123.45 被插入到表中或作为参数传递给存储过程,我可以使用 SQL 分析器并过滤包含字符串“123.45”的命令的命令文本。这可能会找到用于将 123.45 发送到 SQL 服务器的确切命令。如果我正在寻找要分配给 C# 变量的值,但我不知道是哪一个,我可以做类似的事情吗?
我认为答案可能是“否”,但我认为这里有人可能能够对此有所了解。
【问题讨论】:
-
没有有被分配给一个“变量”。例如,可以是 UI 元素的一部分。
-
我假设您熟悉可以在断点上设置的条件?
-
你有来源吗?如果可以,你可以设置断点并使用调用堆栈吗?
-
在本机代码调试器中,您似乎能够中断(CPU 寄存器的)状态。您可能需要进行长时间的调试,但您可以先尝试一个小型测试程序,看看是否可行:msdn.microsoft.com/en-us/library/windows/hardware/…
-
而this channel9 video 正在使用windbg 和sos。该系列中有更多视频可能值得一看。
标签: c# .net visual-studio debugging variables