How to avoid entering library's source files while debugging in Qt Creator with gdb?
You need to turn off auto-solib-add. From a normal gdb prompt you would type:
(gdb) set auto-solib-add off
In Qt Creator, under Options->Debugger->Gdb you can specify a Gdb startup script. Create a file with the "set auto-solib-add off" command in it and then set your Gdb startup script to that file.
The feature you want (as described by rpg) is not available from GDB
, and IMHO would be difficult to use if it were implemented.
A similar, but simpler to use fstep
feature is proposed for GDB
. Given:
foo((string("Hello") + string(" World!)).c_str());
the fstep
would skip all calls on the current line, except the last one (thus skipping string constructors, operator+()
, and c_str()
, and stepping only into foo
).
This hasn't been implemented either, but likely will be in a couple of month (it's very useful for C++
debugging).
In the mean time, you can approximate the feature by setting a temporary breakpoint:
(gdb) list
1 #include <string>
2 #include <iostream>
3 using namespace std;
4
5 void foo(const char *s)
6 {
7 cout << s << endl;
8 }
9
10 int main()
11 {
12 foo((string("Hello") + string(" World!")).c_str());
13 return 0;
14 }
(gdb) b main
Breakpoint 2 at 0x8048901: file t.cc, line 12.
(gdb) run
Breakpoint 1, main () at t.cc:12
12 foo((string("Hello") + string(" World!")).c_str());
(gdb) tb foo
Breakpoint 3 at 0x80488ca: file t.cc, line 7.
(gdb) c
foo (s=0x804a1f4 "Hello World!") at t.cc:7
7 cout << s << endl;
(gdb) q