2014-05-23 39 views
0

我有一個g ++項目,並希望使用gdb進行調試。打開GDB與程序作爲參數產生以下輸出:爲什麼使用gdb啓動C++程序時出現分段錯誤?

Reading symbols from <my_app_name>...Segmentation fault (core dumped) 

編譯標誌

-c -Wall -Werror -Wfatal-errors -Wpedantic -std=c++11 -g 

鏈接標誌

-lssl -lcrypto -pthread -luuid -rdynamic 

我的可執行文件大小爲2141712的調試信息本 的'最高命令'顯示3,417,168個空閒內存。

$ g++ --version 
g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2 

$ gdb --version 
GNU gdb (Ubuntu 7.7-0ubuntu3.1) 7.7 

我曾與在過去的gdb的有限經驗,以及我的意思與我的可執行程序開始時使用GDB這個項目,遺憾的是,因爲GDB段錯誤,調試經驗將是困難的。有人可以幫忙嗎?

我也問過這個問題Ask Ubuntu但我的問題在那裏關閉了,因爲它更適合堆棧溢出。

回答

0

首先看看:

你的編譯標誌似乎缺少前導破折號:

-c std=c++11 -g 

也許應該是:(add leading dash in front of std=c++11

-c -std=c++11 -g 

你的鏈接標誌:

-lssl -lcrypto -pthread -luuid -std=c++11-rdynamic 

大概應該是:(add space between -std=c++11 and -rdynamic

-lssl -lcrypto -pthread -luuid -std=c++11 -rdynamic 

請注意,您不需要-std=c++11選項兩次(配置&鏈接標誌)。

再試一次更新的標誌。

+0

對不起@iomix,我重新選擇我的CXXFLGS時輸入了一個錯字。我用正確的標誌編輯了原始問題。我確實擁有了領先的 - before -std = C++ 11。我也從鏈接標誌中刪除了-std = C++ 11,謝謝你的提示。僅供參考,刪除鏈接標誌-std = c + + 11後,我仍然從段落加載項目從gdb。 – Bamaco

相關問題