天天看点

MAC OSX系统Eclipse使用gdb编译程序时的报错处理

一 ,报错类型

1,写好测试程序时,使用eclipse进行编译测试,无法通过,卡在了含有以下报错信息的窗口

error in final launch sequence

failed to execute mi command:

-exec-run

error message from debugger back end:

unable to find mach task port for process-id 1380: (os/kern) failure (0x5).\n (please check gdb is codesigned - see taskgated(8))

2,改在命令行下使用普通用户账号进行编译测试时,报出如下错误,切换到root根用户时,编译正常通过。

(gdb) run

starting program: /users/eastyang/hello

unable to find mach task port for process-id 525: (os/kern) failure (0x5).

(please check gdb is codesigned - see taskgated(8))

(gdb) 

二,报错分析

系统出于安全的考虑,在没有授权的情况下不允许gdb调试任何程序,因为gdb调试可以掌握了进程的控制权。

如果改为root用户就没有这个问题。

三,解决方法

解决方法就是给gdb授予系统完全信任的代码签名权利,创建方法如下:

1,启动“钥匙串访问”应用(/applications/utilities/keychain access.app)

2,创建证书:打开菜单:钥匙串访问-》证书助理-》创建证书

3,按图中输入和修改以下信息,

输入证书名称,名称可以自己起,该处为 linuxcc-gdb-cert;

选择证书类型:代码签名;

勾选:让我覆盖这些默认签名

MAC OSX系统Eclipse使用gdb编译程序时的报错处理

4,一路继续,出现以下窗口时,选择 系统。

MAC OSX系统Eclipse使用gdb编译程序时的报错处理

5,点击创建,输入系统管理员密码 ,这样证书就创建完成了,然后需要修改证书属性,

找到刚才新建的证书,右键证书选择【显示简价】,打开证书属性窗口,点击【信任】,

在 【使用此证书时】的下拉列表中 选择【始终信任】,然后在弹出的输入管理员密码窗口中,

输入正确的密码,修改完成

MAC OSX系统Eclipse使用gdb编译程序时的报错处理
MAC OSX系统Eclipse使用gdb编译程序时的报错处理

6,把创建和修改好的(代码签名证书)按如下命令赋给 gdb调试程序,然后重启电脑生效。

eastyang$ which gdb

/usr/local/bin/gdb

eastyang$ codesign -s linuxcc-gdb-cert /usr/local/bin/gdb

<b>本文来自 www.linuxcc.org 论坛,转载请注明出处</b>

继续阅读