编译 - gdb调试c++时,遇到endl就无法继续调试
PHP中文网
PHP中文网 2017-04-17 14:18:48
0
1
611

使用gcc编译时候,编译选项如下:

g++ -std=c++11 -g -o cpp730 cpp730.cpp

程序可以正常运行,但是使用gdb.exe调试的时候,遇到endl,就无法继续调试,每次都卡在这个语句.

用来试验的代码比较简单

#include <iostream>
#include <string>
#include <cctype>
using namespace std;

int main(){
    string temp("abcdefg");
    
    cout << temp << endl;
    
    for (auto &a : temp)
        a = toupper(a);
    
    cout << temp << endl;
    
    return 0;
}

g++和gdb都是最新的版本,然后gdb用来调试C语言程序没有出现问题.

PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(1)
小葫芦

更新: 不好意思,弄錯了。 64位元能正確單步追蹤 std::cout

補充 : 你是不是在用 Tdm-mingw x86-64 (64位元版本)的最新本版本(tdm64-gcc-5.1.0-2.exe)的編譯環境?
我今天測試了,tdm64-gcc-5.1.0-2.exe 版本有此問題! (調試到請退回前一版本: tdm64-gcc-5.1.0.exe
(下載頁面https://sourceforge.net/proje... )
一切OK了。
我明​​天有空的話,我向作者提交這個問題。

---------------(以下分析沒錯,但不是這個問題根本原因)---------
1、endl 其實是個函數的位址;
2、然後看你好像是在endl語句上,執行了「s」指令,也就是單步進入(函數)
3、由於endl是C++標準函式庫的內容,沒有對應的原始碼.
你試試在那一行上用 n 吧。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!