/JMC
(“仅我的代码”调试)
指定对 Visual Studio 调试程序中本机“仅我的代码”调试的编译器支持。 此选项支持用户设置,使 Visual Studio 能够单步执行系统、框架、库和其他非用户调用,并在调用堆栈窗口中折叠这些调用。 从 Visual Studio 2017 版本 15.8 开始,/JMC
编译器选项可用。
语法
]$
备注
Visual Studio“仅我的代码”设置指定 Visual Studio 调试程序是否单步执行系统、框架、库和其他非用户调用。 /JMC
编译器选项支持本机 C++ 代码中“仅我的代码”调试。 启用 /JMC
后,编译器会在函数 prolog 中插入对帮助程序函数 __CheckForDebuggerJustMyCode
的调用。 帮助程序函数提供支持 Visual Studio 调试程序“仅我的代码”步骤操作的挂钩。 若要在 Visual Studio 调试程序中启用“仅我的代码”,请在菜单栏上选择“工具>“选项”,然后在“调试”>“常规”>“启用仅我的代码”中设置该选项。
/JMC
选项要求代码链接到 C 运行时库 (CRT),该库提供 __CheckForDebuggerJustMyCode
帮助程序函数。 如果项目未链接到 CRT,你可能会看到链接器错误 LNK2019:未解析的外部符号__CheckForDebuggerJustMyCode。 若要解决此错误,请链接到 CRT 或禁用 /JMC
选项。
启用 /JMC
选项后,PDB 文件会批注额外的行号信息。 在 Visual Studio 2019 版本 16.8 之前的版本中,此信息可能会出现在代码覆盖率报告中,就像出现在行 15732480 (0xF00F00) 或 16707566 (0xFEEFEE) 中一样。 这些虚构行号用作标记,可划分用户代码和非用户代码。 若要在代码覆盖率报告中包括非用户代码,而非这些意外行号,请使用 /JMC-
选项生成代码。
默认情况下,/JMC
编译器选项处于关闭状态。 但是,从 Visual Studio 2017 版本 15.8 开始,此选项在大多数 Visual Studio 项目模板中为开启状态。 若要显式禁用此选项,请使用命令行上的 /JMC-
选项。 在 Visual Studio 中,打开项目“属性页”对话框,并将“配置属性”>“C/C++”>“常规”属性页中的“支持仅我的代码调试”属性更改为“否”。
有关详细信息,请参阅指定是否使用 Visual Studio 中的“仅我的代码”仅调试用户代码中的 C++ 仅我的代码,以及 Visual C++ 团队博客文章宣布 Visual Studio 中 C++ 仅我的代码单步执行。
在 Visual Studio 开发环境中设置此编译器选项
打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。
选择“配置属性”>“C/C++”>“常规”属性页。
修改“支持仅我的代码调试”属性。
以编程方式设置此编译器选项
- 请参阅 AdditionalOptions。