如何自定义Visual Studio调试器跳过构造函数等指定成员函数
实现方法
完全可以通过和.natvis定位类似的.natstepfilter配置文件实现该需求,该配置专门用于定义Visual Studio调试时自动跳过的函数规则,无需每次手动选择单步进入的目标函数。
具体操作步骤
- 新建一个后缀为
.natstepfilter的XML格式文件,存放路径二选一即可:- 全局生效:放在
%USERPROFILE%\Documents\Visual Studio 20xx\Visualizers目录下,其中20xx替换为你使用的VS版本号(如2022、2019) - 项目级生效:直接放在当前项目的源码根目录下,仅对当前项目生效
- 全局生效:放在
- 填入对应配置内容,针对你给出的示例,配置写法如下:
<?xml version="1.0" encoding="utf-8"?> <StepFilter xmlns="http://schemas.microsoft.com/vstudio/debugger/natstepfilter/2010"> <!-- 跳过pt类的构造函数 --> <Function> <Name>pt::pt</Name> <Action>NoStepInto</Action> </Function> <!-- 如果需要跳过pt类所有成员函数,可新增以下规则 --> <!-- <Function> <Name>pt::*</Name> <Action>NoStepInto</Action> </Function> --> </StepFilter>
- 保存文件后重启调试会话即可生效,无需重启Visual Studio。
规则说明
<Name>标签支持通配符匹配,可灵活匹配批量函数:- 匹配特定命名空间下所有函数:
my_namespace::* - 匹配所有类的拷贝构造函数:
*::*(const *&)
- 匹配特定命名空间下所有函数:
- 除了配置文件方式,也可以在VS「工具>选项>调试>常规」中开启「仅我的代码」选项,会自动跳过系统库、STL等非用户编写的代码,自定义类的函数过滤还是
.natstepfilter灵活度更高。
配置完成后,你在示例代码中单步进入some_function({1, 2})时,调试器会自动跳过pt的构造函数,直接进入some_function内部。
内容的提问来源于stack exchange,提问作者ttemple
相关产品推荐
相关产品推荐

