|
|
1
4
这个问题可能意味着以下两点之一:
基于生成配置这可以通过使用与编译器相关的预处理器宏(例如。 _DEBUG for the Win32 CRT ). 基于是否附加调试器这可以用几种不同的方法来解决。 全局布尔变量
我发现的一种方法是定义一个全局布尔变量,它初始化为
当我用调试器附加到代码时,中断代码并重写
注册表项
定义
然后将调试代码的条件设置为将此注册表值设置为
|
|
|
2
2
如果希望在调试/发布版本中包含或不包含某些代码,通常
如果需要对附加的调试器进行运行时检查,则应使用 IsDebuggerPresent API,用于检测是否附加了用户模式调试器。 请注意,它不是100%可靠的,因为在一些不那么困难的工作中,调试器会使它对您的应用程序撒谎。换言之,它不利于安全/防欺骗保护和这类东西,更多的是启用对调试器的额外帮助(例如,正如页面本身所说,使用 OutputDeubgString 等等)。而且,它不会检测内核模式的调试器,它们可以做任何他们想做的事情。 无论如何,我建议您避免将此函数用于复杂的事情,因为在附加调试器时,您会引入不同的代码路径,这会使调试“奇怪”的错误变得相当困难。我间接使用的所有呈现这种行为的代码(例如,几乎没有文档记录的Windows调试堆)总是让我头疼。 |
|
|
3
0
设置全局变量
|
|
|
4
0
有一种更直接的方法来解决这个问题。在调试器会话期间,可以手动调用所选函数:
当做,
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |