我正在调试一些代码,每次都需要中断,当字符串中的字符(const char *)等于某个值时。
所以我放了断点并附加条件,例如:s[0] == 'e'
。但是我正在调试的代码在 CRT 中,并且有可能,这s == 0
是真的。所以“寻址空指针”应该给出某种错误。是的-我可以给那里条件s != 0
,但这不会那么有趣:)
我很好奇,调试器在尝试评估这种情况时会做什么?它将如何在内部表现?显然它没有给出任何错误,也没有在这个断点上停止s == 0
感谢您的回答。
我正在调试一些代码,每次都需要中断,当字符串中的字符(const char *)等于某个值时。
所以我放了断点并附加条件,例如:s[0] == 'e'
。但是我正在调试的代码在 CRT 中,并且有可能,这s == 0
是真的。所以“寻址空指针”应该给出某种错误。是的-我可以给那里条件s != 0
,但这不会那么有趣:)
我很好奇,调试器在尝试评估这种情况时会做什么?它将如何在内部表现?显然它没有给出任何错误,也没有在这个断点上停止s == 0
感谢您的回答。
从未尝试过,但我认为它会停止执行。我的假设基于此:
If you set a breakpoint condition with invalid syntax, a warning message appears immediately. If you specify a breakpoint condition with valid syntax but invalid semantics, a warning message appears the first time the breakpoint is hit. In either case, the debugger breaks execution when the invalid breakpoint is hit. The breakpoint is skipped only if the condition is valid and evaluates to false.
来源。