cod*_*deG 19 debugging gdb geany macos-mojave
从10.5开始,围绕与macOS的协同设计问题有很多主题.我想要实现的是让Geany使用GNU Debugger(gdb).调试器在geany中找到,但(已经很熟知)错误消息是:
Error message from debugger back end:
Unable to find Mach task port for process-id 39847: (os/kern) failure (0x5).\n (please check gdb is codesigned - see taskgated(8))
Unable to find Mach task port for process-id 39847: (os/kern) failure (0x5).\n (please check gdb is codesigned - see taskgated(8))
Run Code Online (Sandbox Code Playgroud)
通常有很多限制需要考虑(应该)允许使用gdb,例如gdb 8.0.1可能有效,gdb 8.1根本不起作用 - 请参阅此处,也在Lazarus Wiki中确认.
0)我根据各种说明所涵盖的步骤创建了我的证书"gdb-cert".这里的例子
1)我遵循了对gdb可执行文件(源代码:gdb和Stackoverflow)进行协同处理的步骤,这在我的情况下是
/usr/local/Cellar/gdb/8.0.1/bin/gdb
(再次注意,某些语言有8.1的问题 - pascal也是如此).如果您想确保代码已签名,请转到
$ codesign -vvvv gdb
Run Code Online (Sandbox Code Playgroud)
在相应的目录中.我的是.
2)确保证书实际分配为有资格进行代码签名 - 这是我的情况.它也是值得信赖的 - 这是必要的.
3)我还尝试了另一种方法来运行上面描述的gdb运行,其中文件已被编辑(请注意,首先必须在恢复中禁用SIP !!)
修改仅csrutil disable
在恢复中使用时才有效.
sudo nano /System/Library/LaunchDaemons/com.apple.taskgated.plist
Run Code Online (Sandbox Code Playgroud)
破坏性的事情,在这一步之后,没有代码编辑器会再次启动(!!),直到这个更改被撤消(Geany,Atom,文本编辑器,MS Visual Studio - 在将-sp插入文件后都被破坏)
4)在某些主题中,我发现调试只有csrutil enable --withouth
在恢复中使用命令调试时才有效.这没有改变任何事情.
最终我得到了:
如果有人能证实这种行为,我会非常感激,这个解决方案更加:)
小智 37
这与协同设定权利相关.您必须在签名过程中添加"com.apple.security.cs.debugger"键.
例如,你必须codesign -fs gdbcert /usr/local/bin/gdb
改为codesign --entitlements gdb.xml -fs gdbcert /usr/local/bin/gdb
.
gdb.xml内容必须类似于以下代码.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.debugger</key>
<true/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7647 次 |
最近记录: |