我正在尝试调试以下简单程序:
#include <iostream>
template <class... Args>
void printAll(Args&&... args) {
using swallow = int[];
swallow{0,
(std::cout << args, 0)...
};
}
int main() {
printAll(1, "23", 4);
}
使用gcc 4.9.2编译:
g++ -std=c++11 -g -O0 foo.cxx
然后使用gdb 7.9进行调试:
gdb a.out
(gdb) break foo.cxx:5
Breakpoint 1 at 0x400884: file foo.cxx, line 5.
(gdb) run
Starting program: /..[snip]../a.out
Breakpoint 1, printAll<int, char const (&) [3], int>(int&&, char const (&) [3], int&&) () at foo.cxx:6
6 swallow{0,
(gdb) bt
#0 printAll<int, char const (&) [3], int>(int&&, char const (&) [3], int&&) () at foo.cxx:6
#1 0x0000000000400813 in main () at foo.cxx:12
我在正确的函数中,但是没有办法检查参数包:
(gdb) info args
No arguments.
(gdb) print args
No symbol "args" in current context.
(gdb) inspect args
No symbol "args" in current context.
我如何实际检查这些参数?
g++: 警告:不再支持选项‘-gstabs+’。
- user2023370