You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GDB调试时避免单步进入C++内置类型及STL容器的实现代码

GDB避免单步进入C++ STL容器实现代码的方案
  • 方案1:使用内置skip规则(推荐,GDB 7.4及以上版本支持)
    直接执行以下命令即可全局跳过所有STL实现代码:
# 跳过所有std命名空间下的函数
skip -rfu ^std::
# 也可匹配STL头文件路径,避免进入库文件代码
skip -r ^/usr/include/c\+\+/.*

执行完成后再调用step命令,会直接跳过STL实现,进入你自己定义的addInfo等业务函数内部。
你可以通过info skip查看已生效的跳过规则,skip delete [规则序号]删除不需要的规则。如果希望每次启动GDB自动生效,可以把上述命令写入~/.gdbinit配置文件。

  • 方案2:临时跳出STL代码
    如果不想配置全局规则,不小心单步进入STL实现后,直接输入until命令即可执行到当前函数返回,回到你的业务代码上下文。也可以指定业务函数的行号直接跳转,比如你的addInfo函数第一行是行号45,执行until 45就会直接运行到该行停下。

  • 方案3:老版本GDB兼容方案(7.4以下版本)
    可以自定义单步宏实现自动跳过逻辑,在GDB中执行或者写入~/.gdbinit:

define mystep
    step
    while ($pc =~ /^std::/) || ($filename =~ /^\/usr\/include\/c++\//)
        step
    end
end
# 绑定快捷键s到自定义单步命令
alias s = mystep

之后使用s命令单步就会自动跳过STL实现代码。

内容的提问来源于stack exchange,提问作者marlon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:24:05