2010-04-06 44 views
2

我有一個C++應用程序上創建對象設置斷點,具有以下的main.cpp:GDB沒有打破在C++

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)(Fri Sep 18 18:40:51 UTC 2009)),並用gcc(gcc版本4.2.1(Apple Inc. build 5646)(dot 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行斷開?

德魯J.索內。

編輯:答案 - GDB skips over my code!

+1

今天早些時候,我們有一個關於這個話題的問題:http://stackoverflow.com/questions/2579020/gdb-skips-over-my-code/2579044#2579044(確切的複製)。 – 2010-04-06 00:50:35

+0

我確實搜索gdb,斷點等,但找不到它,但是由於這提供了更多信息。 – Drew 2010-04-06 00:55:08

+1

沒關係,搜索可能不可靠。你的問題引入了更多的關鍵詞,幫助未來的搜索者。 – GManNickG 2010-04-06 01:14:46

回答

5

您需要實例熱圖如下:

HeatMap heatMap; 

HeatMap heatMap();聲明返回熱圖的功能。

+0

有時候我有點傻......謝謝你: - } – Drew 2010-04-06 00:49:49

+2

@Drew - 你絕對不是笨蛋。你遇到了被稱爲「最令人頭痛的解析」的C++語法的奇怪之處。 – 2010-04-06 01:09:42