DEV C++ 中的 GDB 在 cout 上停止

Posted

技术标签:

【中文标题】DEV C++ 中的 GDB 在 cout 上停止【英文标题】:GDB in DEV C++ stalls on cout 【发布时间】:2016-10-11 03:24:02 【问题描述】:

我最近开始使用 DEV C++ 进行编程,遇到了一个问题,在 Googleshere 中搜索尚未证明有帮助。

在以下代码中,GDB 在到达第 5 行时“挂起”std::cout << "Hello" << std::endl;

#include <iostream>
int main()

    int tree = 9;
    std::cout << "Hello" << std::endl;
    tree = 10;
    return 0;

程序编译和运行都很好,但是单步执行时总是卡在这里,“下一行”或“继续”似乎都不起作用。

以下是 GDB 窗口的一些输出:

Starting program: C:\XXX\XXX\XXX\XXX\breakGDB.exe 
[New Thread 7300.0x2028]

->->new-thread
[New Thread 7300.0x2638]

->->new-thread

->->starting

->->breakpoints-invalid

->->frames-invalid

->->breakpoint 1

Breakpoint 1, 
->->frame-begin 0 0x40153d

->->frame-function-name
main
->->frame-args
 ()
->->frame-source-begin
 at 
->->frame-source-file
hello.cpp
->->frame-source-file-end
:
->->frame-source-line
5
->->frame-source-end


->->source C:\XXX\XXX\XXX\XXX\hello.cpp:5:38:beg:0x40153d

->->frame-end

->->stopped

->->pre-prompt
(gdb) 
->->prompt

->->post-prompt

->->frames-invalid

->->starting

->->frame-begin 0 0x44d2f0

->->frame-address
0x000000000044d2f0
->->frame-address-end
 in 
->->frame-function-name
std::ostream::operator<<(std::ostream& (*)(std::ostream&))
->->frame-args
 ()

->->frame-end

->->stopped

->->pre-prompt
(gdb) 
->->prompt

->->post-prompt
Single stepping until exit from function _ZNSolsEPFRSoS_E,
which has no line number information.

->->frames-invalid

->->starting

->->frame-begin 0 0x46cf10

->->frame-address
0x000000000046cf10
->->frame-address-end
 in 
->->frame-function-name
std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
->->frame-args
 ()

->->frame-end

->->stopped

->->pre-prompt
(gdb) 
->->prompt

我对 GDB 很陌生。这是 GDB 的一个特性吗?我是不是设置错了?这是怎么回事?

我已经祈祷了,这不是我的愚蠢错误。

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,并通过将编译器集从 64 位调试切换到 32 位调试来“解决”它。

仍然需要 64 位的解决方案。

// Dev-Cpp 5.11 TDM-GCC x64 4.9.2 Portable

【讨论】:

以上是关于DEV C++ 中的 GDB 在 cout 上停止的主要内容,如果未能解决你的问题,请参考以下文章

挂在 std::cout 上的 GDB 调试器

从 libc.so.6 调试停止的 write() 到 std::cout

在 Eclipse 中查看变量时 Gdb 停止

GDB 没有停止 python 脚本中的“中断”命令

C++ to_string 不是 Dev C++ 上 std 的成员

在 GDB 中的第一条机器代码指令处停止