我已经在Mac OS X上安装了GDB并测试它是否有效我已经使用了以下C程序.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int *my_array = (int *) malloc(5 * sizeof(int));
int i;
for (i = 0; i < 1000000; i++) {
my_array[i] = i;
}
free(my_array);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译时出错,这是正常的(分段错误)
但是,在编译命令中添加-g标志并在我编译的程序上运行gdb时,我在启动命令运行后收到此消息
During startup program terminated with signal ?, Unknown signal.
Run Code Online (Sandbox Code Playgroud)
真的不知道它来自哪里.我添加了一个证书,以确保gdb在OS X上正常工作但我找不到任何解决此问题的方法.
Par*_*tra 31
从这个答案:https://stackoverflow.com/a/40437725/1060955
这就是我轻松解决问题的方法.[更新:根据收到的反馈意见,尚未得到验证,似乎此解决方案适用于macOS Sierra 10.12但不适用于macOS Sierra 10.12.2]
请在此处查看视频说明
退出gdb
使用文本编辑器(例如Sublime Text),在用户文件夹中保存名为".gdbinit"[排除引号]的文件.
在文件中添加以下内容:"set startup-with-shell off"[排除引号]
保存文件
gdb现在应该可以工作了
来源
https://discussions.apple.com/thread/7684629?start=0&tstart=0
.gdbinit位于何处,如何编辑?
https://sourceware.org/gdb/onlinedocs/gdb/Starting.html
小智 27
如果你在塞拉利昂,那是预期的.GDB与macOS Sierra不兼容,甚至是最后一个版本(7.12).
我们应该等待另一个GDB版本,或者等待macOS的另一个更新,以便修复bug.
小智 9
我通过Homebrew安装了gdb.在安装结束时它说:
在10.12(Sierra)或更高版本的SIP中,您需要运行以下命令:
Run Code Online (Sandbox Code Playgroud)echo "set startup-with-shell off" >> ~/.gdbinit
这是使它工作的必要条件.此外,我必须确保.gdbinit在Eclipse Debug配置中设置了它
对我来说,只需卸载并安装gdb,就可以在MacOS Sierra版本10.12.4上完美地工作,
$ brew uninstall gdb
$ brew安装gdb
这将安装与MacOS Sierra兼容的最新gdb.
希望对任何人都有帮助!
| 归档时间: |
|
| 查看次数: |
21287 次 |
| 最近记录: |