gdb로 Qt Creator에서 디버깅하는 동안 라이브러리의 소스 파일을 입력하지 않으려면 어떻게해야합니까? [c++]


Answers

rpg에 의해 설명 된대로 원하는 기능을 GDB 에서 사용할 수 없으며 구현 된 경우 IMHO를 사용하기가 어려울 수 있습니다.

유사하지만 단순하지만 fstep 기능을 사용하는 것이 GDB 위해 제안되었습니다. 주어진:

foo((string("Hello") + string(" World!)).c_str());

fstep 은 마지막 행을 제외하고 현재 행에서 모든 호출을 건너 뜁니다 (따라서 문자열 생성자, operator+()c_str() 를 건너 뛰고 foo 로만 이동).

이것은 아직 구현되지 않았지만, 아마도 2 달 안에있을 것입니다 (이것은 C++ 디버깅에 매우 유용합니다).

그 동안 임시 중단 점을 설정하여 기능을 근사시킬 수 있습니다.

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

Qt Creator 및 / 또는 gdb를 구성하여 Qt 라이브러리를 사용하여 프로그램을 디버깅하는 동안 디버거가 Qt의 소스 파일에 들어 가지 않도록 할 수 있습니까?