在我的程序中,有一个变量有时会得到值-1。我想知道代码中究竟发生了什么。在Visual C#中,是否有一个我可以使用的工具或方法,以便当变量变为-1时,调试过程暂停,我被带到变量设置为-1的代码行?
答案 0 :(得分:4)
是的!条件断点。单击,就像通常添加断点一样,然后右键单击红点,然后选择“条件”。把陈述放在括号中。
23: x++;
[x] Condition: (x == 2)
答案 1 :(得分:2)
什么类型的变量?如果是属性,请在设置器中添加conditional breakpoint。一旦命中该行,请查看call stack以查看其设置位置。
答案 2 :(得分:2)
正如建议的那样,将var转换为属性,将断点放在setter上,当你点击断点时,VS中的一个窗口看到调用堆栈(debug - > windows - > call stack)
调用堆栈是一堆调用 - 从您使用的方法或函数到您所在的位置。 (主要 - > connectToDatabase - > connectToPort - > sendTcpPacket,例如)
答案 3 :(得分:0)
我建议先将此变量转换为带有setter和getter的属性。然后重构代码以确保直接写入和读取此变量的所有位置都不会更改为使用属性的setter和getter。最后,您可以在属性的setter中设置条件断点,以在属性设置为-1时暂停程序。然后查看通话轨道以了解这种情况发生的位置。