C++ gdb";跳过“;命令不能跳过libc++;头文件
我已经读过了,但它在libc++头文件(如“memory”)中不起作用 例如:C++ gdb";跳过“;命令不能跳过libc++;头文件,c++,gdb,libc++,C++,Gdb,Libc++,我已经读过了,但它在libc++头文件(如“memory”)中不起作用 例如: //main.cc #包括 int main(){ std::unique_ptr a=std::make_unique(10); 返回0; } 编译时使用: clang++-g-stdlib=libc++-std=c++14 main.cc 然后启动gdb并跳过内存文件: (gdb)跳过-file/usr/include/c++/v1/memory 在这之后,您仍然可以进入std::make_unique()
//main.cc
#包括
int main(){
std::unique_ptr a=std::make_unique(10);
返回0;
}
编译时使用:
clang++-g-stdlib=libc++-std=c++14 main.cc
然后启动gdb并跳过内存文件:
(gdb)跳过-file/usr/include/c++/v1/memory
在这之后,您仍然可以进入std::make_unique()
函数,这是为什么?(我使用gdb-8.3.1-release。)
2020.1.15:我可以确认路径是正确的,因为我从gdb帧复制了路径 我还尝试添加以下跳过规则,但仍然无效。(前两个规则在libstdc++中有效。)
skip-rfu std::*
跳过-rfu标准::*::*
跳过-gfu/usr/include/c++/v1/*
我试着调试gdb-8.3.1本身,发现gdb是从gdb/infrun.c:6365
返回的,因为在
中返回return1
。而在libc++
版本的std::make\u unique
中,gdb进入gdb/infrun.c:6569
并调用函数时,名字被标记为u跳过()
function\u name\u被标记为\u skip()
是gdb检查跳过规则的位置
因此,它看起来像是一个新的gdb问题。当您跳到std::make_unique
时,它是否显示当前文件是您排除的文件?是的,我从gdb帧复制路径。