Ich versuche, das folgende einfache Programm zu debuggen:in gdb
#include <iostream>
template <class... Args>
void printAll(Args&&... args) {
using swallow = int[];
swallow{0,
(std::cout << args, 0)...
};
}
int main() {
printAll(1, "23", 4);
}
Zusammengestellt mit gcc 4.9.2 mit:
g++ -std=c++11 -g -O0 foo.cxx
Und dann Debugging mit GDB 7.9 verwenden:
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
ich bin in der richtigen Funktion, aber ich habe keine Möglichkeit, die Parameter zu inspizieren:
(gdb) info args
No arguments.
(gdb) print args
No symbol "args" in current context.
(gdb) inspect args
No symbol "args" in current context.
Wie überprüfe ich tatsächlich die Argumente?
Funktioniert! Und ist * herrlich * dunkel. Es scheint, als hätte OP in dieser anderen Frage nicht wirklich das bekommen, was er von der verknüpften Antwort wollte? Denken Sie, wir sollten diesen als einen Betrogenen von diesem schließen? – Barry
Mit Links aktualisiert, um Tracker zu veröffentlichen, mit Patches. – ecatmur
@Barry gute Idee, ich habe getan, wie Sie vorgeschlagen. – ecatmur