【发布时间】:2018-03-06 23:17:27
【问题描述】:
编译时
#include <vector>
#include <stdio.h>
int main()
{
std::vector<int> foo;
foo.push_back( 1 );
printf( "%zu\n", foo.size() );
}
对于 clang++ foo.cpp -stdlib=libc++ -g,当在 gdb 中运行 a.out 并尝试显示 foo.size() 的结果时,gdb 说“无法评估函数 - 可能是内联的”。
有没有办法避免编译器在调试模式下内联?我可以使用 libstdc++,但是当需要进入模板时会非常痛苦(许多子调用加上缩进有时是基于空格的,有时是基于制表符的)。
我正在使用 libc++-dev v3.5 和 clang 3.8 运行 Debian 9 (stretch)(也尝试使用 clang 5.0,结果相同)和 gdb 7.12。
【问题讨论】:
-
我必须承认我没有注意到这一点,但这里至少有两个不同之处:它适用于 libstdc++,并且内联不在我的控制之下。
标签: c++ debugging gdb clang inline