GDB не ломается в точках останова, установленных при создании объекта в C ++ - PullRequest
2 голосов
/ 06 апреля 2010

У меня есть приложение на c ++ со следующим main.cpp:

1:  #include <stdio.h>
2:  #include "HeatMap.h"
3:  #include <iostream>
4:
5:  int main (int argc, char * const argv[])
6:  {
7:    HeatMap heatMap();
8:    printf("message");
9:    return 0;
10: }

Все компилируется без ошибок, я использую gdb ( GNU gdb 6.3.50-20050815 (версия Apple gdb-1346) (пт. 18 сентября 20:40:51 UTC 2009) ) и скомпилирован приложение с gcc ( gcc версии 4.2.1 (Apple Inc., сборка 5646) (точка 1) ) с командами "-c -g".

Когда я добавляю точки останова в строки 7, 8 и 9 и запускаю gdb, я получаю следующее ...

(gdb) break main.cpp:7
Breakpoint 1 at 0x10000177f: file src/main.cpp, line 8.
(gdb) break main.cpp:8
Note: breakpoint 1 also set at pc 0x10000177f.
Breakpoint 2 at 0x10000177f: file src/main.cpp, line 8.
(gdb) break main.cpp:9
Breakpoint 3 at 0x100001790: file src/main.cpp, line 9.
(gdb) run
Starting program: /DevProjects/DataManager/build/DataManager 
Reading symbols for shared libraries ++. done

Breakpoint 1, main (argc=1, argv=0x7fff5fbff960) at src/main.cpp:8
8       printf("message");
(gdb) 

Итак, почему, кто-нибудь знает, почему мое приложение не прерывает точки останова для создания объекта, но прерывает строку printf?

Дрю Дж. Сонн.

РЕДАКТИРОВАТЬ : Ответ - GDB пропускает мой код!

1 Ответ

5 голосов
/ 06 апреля 2010

Вам нужно создать HeatMap как:

HeatMap heatMap;

HeatMap heatMap(); объявляет функцию, которая возвращает HeatMap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...