我是编程的初学者,并且很难跟踪错误,这种情况发生的原因通常是将变量放在手表上,并且在我注意到某些变化之前一直按f5。我在视觉c#2010上,我有18000行代码,所以只有运气好我才能解决问题。
当变量发生变化时,有没有办法立即转到代码行?
答案 0 :(得分:4)
您可以将变量更改为property并在设置器上放置断点。然后,您可以拥有一个断点,每次一段代码更改其值时都会遇到这个断点。
所以如果你有:
int myVariable;
将其更改为:
int myVariable {
get;
set; // <-- Put your breakpoint here
}
答案 1 :(得分:4)
这听起来像是一个设计问题。理想情况下,您应该将变量的位置限制为代码中非常具体的位置。这是避免全局变量和静态变量的一个原因,除非您有充分的理由使用它们。即使这样,您也应该将访问器方法定义为这些变量的接口,而不是直接更改它们。
在调试代码时,我建议您寻找可以改进代码的方法,以便将来调试不那么困难。
答案 2 :(得分:1)
您可以拥有条件断点,只有在满足条件时才会触发。
所以,假设你有一个索引变量indx
,你可以设置一个条件断点,说只在值= 7 时停止,然后当你'时它会停在那里'重新改变条件...
答案 3 :(得分:1)
在本机代码中,最好的办法是设置数据断点。无论更改来自何处,数据更改时都会触发数据断点。
然而,你无法为.NET做到这一点。当变量的值发生变化时,您无法要求调试器中断。但是,并非所有希望都失去了。对相关变量执行“查找用法”或“查找引用”,以查找代码中使用该变量的所有位置。然后在每个位置设置一个断点,以查看变量值何时发生变化。