1

环境:Mac/Mojave 和 GDB 8.2.1(通过自制软件)。

我按照说明工作https://forward-in-code.blogspot.com/2018/11/mojave-vs-gdb.html即:

  • 通过 brew 的最新 GDB,它解决了可执行格式问题

  • 用新的权利签署 GDB

此外,我还修改了 SIP 以允许调试(在 Recovery OS 终端中:)csrutil enable --without debug

但是,我仍然无法让 gdb 工作:

(gdb) file main
Reading symbols from main...done.
(gdb) run
Starting program: /Users/joubertold/code/Rhodus/obj/debug/main 
[New Thread 0x1a03 of process 5082]
[New Thread 0x2803 of process 5082]
During startup program terminated with signal ?, Unknown signal.
(gdb) 

有趣的是,lldb 在同一个二进制文件上为我工作:

(lldb) file main
Current executable set to 'main' (x86_64).
(lldb) run
Process 5086 launched: '/Users/joubertold/code/Rhodus/obj/debug/main' (x86_64)
Rhodus
 1 is ONE
 1 is between 1 and 10
 1 is between 1 and 10
 1 is between 1 and 10
 1 is between 1 and 10
 1 is between 1 and 10
 1 is between 1 and 10
 1 is between 1 and 10
 1 is between 1 and 10
 1 is beyond
 1 is beyond
 1 is beyond
Process 5086 exited with status = 0 (0x00000000) 
(lldb) 

有什么想法吗?

4

2 回答 2

1

我通过以下方式让 gdb 在 Mojave 上工作:

a) 获取最新的 gdb 源存档(在撰写本文时, ftp: //sourceware.org/pub/gdb/snapshots/current/gdb-weekly-8.2.50.20190212.tar.xz)——除其他外,它增加了处理用于识别 Mac 上的可执行文件。

b) 构建 gdb。我在 darwin-nat.c 中遇到了变量阴影的错误,所以我编辑了文件并重建了(diff https://gist.github.com/joubertnel/267ca0fff4eaad494cc19ec3ba7953ed)。

c) 按照https://forward-in-code.blogspot.com/2018/11/mojave-vs-gdb.html中的步骤进行操作

瞧。

于 2019-02-18T17:10:50.370 回答
0

不幸的是,接受的答案对我不起作用。

对于和我有同样情况的人,我建议改用 Visual Studio Code 或 Xcode 来调试你的 C 程序。

于 2020-08-22T09:07:34.717 回答