C#调试技巧:无需修改代码,判断if语句中哪个函数触发条件成立
如何判断C#逻辑或条件中哪个函数触发了分支?
不用改代码也能轻松搞定,给你几个实用的调试技巧:
用调试器的返回值变量查看结果
在Visual Studio里,当你单步执行过func1()之后,直接打开即时窗口(可以按Ctrl+Alt+I调出),输入$ReturnValue就能拿到func1()的返回值。如果这个值是true,那不管func2()返回啥,都会进入then分支;如果是false,那必然是func2()返回了true才触发的分支。另外,你也可以看自动窗口,里面会自动显示最近函数调用的返回结果。利用短路特性+逐语句调试
逻辑或||有短路求值的特性:如果func1()返回true,func2()根本不会被执行。所以调试的时候别用“逐过程”(Step Over),改用“逐语句”(Step Into):- 要是能进入
func2(),说明func1()返回了false,此时func2()的返回值就是决定条件的关键; - 要是执行完
func1()直接跳去then分支,那肯定是func1()返回了true。
- 要是能进入
验证两个函数是否都返回true
如果想确认是不是两个函数都返回true,可以在执行完func1()且已知它返回true后,在即时窗口里直接调用func2()(注意:如果func2()有修改程序状态的副作用,别这么干,会影响调试流程),看看它的返回值就行。
内容的提问来源于stack exchange,提问作者Sabuncu
相关产品推荐
相关产品推荐

