C++ gdb";跳过“;命令不能跳过libc++;头文件

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()

我已经读过了,但它在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()
函数,这是为什么?(我使用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
返回的,因为
中返回
return
1
。而在
libc++
版本的
std::make\u unique
中,gdb进入
gdb/infrun.c:6569
并调用
函数时,名字被标记为u跳过()

function\u name\u被标记为\u skip()
是gdb检查跳过规则的位置


因此,它看起来像是一个新的gdb问题。

当您跳到
std::make_unique
时,它是否显示当前文件是您排除的文件?是的,我从gdb帧复制路径。