gpt4 book ai didi

c++ - gdb 无法在 mac os x 中调试 "hello world"

转载 作者:太空宇宙 更新时间:2023-11-04 12:20:47 25 4
gpt4 key购买 nike

我有以下小型 C++ 程序

#include <stdio.h>
#include <stdlib.h>

int main(void) {
puts("!!!Hello World!!!");
return EXIT_SUCCESS;
}

我在 Mac OS X Leopard 上一个版本中编译使用:

g++ -g hello.cpp -o hello.exe

成为 g++:

host:bin macbook$ g++ --ver
Using built-in specs.
Target: i686-apple-darwin9
Configured with: /var/tmp/gcc/gcc-5493~1/src/configure --disable-checking -enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.0/ --with-gxx-include-dir=/include/c++/4.0.0 --with-slibdir=/usr/lib --build=i686-apple-darwin9 --with-arch=apple --with-tune=generic --host=i686-apple-darwin9 --target=i686-apple-darwin9
Thread model: posix
gcc version 4.0.1 (Apple Inc. build 5493)

然后我尝试使用 fsf-gdb 7.1 调试这个程序:

fsf-gdb hello.exe

在main中打断点:

(gdb) b main
Breakpoint 1 at 0x1f8f: file hello.cpp, line 5.

运行程序:

(gdb) r
Starting program: /Users/horacio/work/software/gdb/gdb-7.2-inst/bin/hello.exe

Breakpoint 1, main () at hello.cpp:5
5 puts("!!!Hello World!!!");

尝试迈步,结果发生了:

(gdb) n
0x00003045 in ?? ()

如果我在 Ubuntu Linux 下执行相同操作,则输出如下:

(gdb) n
!!!Hello World!!!
6 return EXIT_SUCCESS;

其中 gdb=7.1 和 g++=4.3.4

这是什么问题????老实说,我不明白为什么这在 mac os x 中不起作用。

可能是mac中使用的gdb版本或者mac中的gcc版本的问题。 Mac 中的 gdb 还有哪些其他替代方案?

提前致谢

PS:Apple Leopard 的 gdb 不会产生这个错误。但我想使用 Eclipse CDT,它不能与 Apple 的 gdb 一起工作,这就是为什么我尝试使用非 Apple gdb 版本的原因。

最佳答案

如果您使用与 Mac 捆绑在一起的 gdb,这会很好地工作。 Apple 的 gcc 包含一些小的 Apple 专用扩展,因此它与其他版本的 gdb 不是 100% 兼容也就不足为奇了。您还可能错误地构建了自定义 gdb。

你提到你的 g++ 是 4.3.4,但你上面显示的是 4.0.1。

关于c++ - gdb 无法在 mac os x 中调试 "hello world",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5234664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com