/JMC(“仅我的代码”调试)

指定对 Visual Studio 调试程序中本机“仅我的代码”调试的编译器支持。 此选项支持用户设置,使 Visual Studio 能够单步执行系统、框架、库和其他非用户调用,并在调用堆栈窗口中折叠这些调用。 从 Visual Studio 2017 版本 15.8 开始,/JMC 编译器选项可用。

语法

/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 开发环境中设置此编译器选项

  1. 打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性

  2. 选择“配置属性”>“C/C++”>“常规”属性页

  3. 修改“支持仅我的代码调试”属性。

以编程方式设置此编译器选项

另请参阅

MSVC 编译器选项
MSVC 编译器命令行语法