美文网首页Other
[other] OSX使用gdb调试C程序

[other] OSX使用gdb调试C程序

作者: 何幻 | 来源:发表于2019-06-24 21:12 被阅读1次

    GDB指的是 The GNU Project Debugger,是 GNU 开源组织开发的一个程序调试工具。
    在 Mac OSX 中使用 GDB,遇到了一些困难,文本来记录一下。

    1. 安装 gdb

    $ brew install gdb
    

    2. 编写C程序

    hello.c

    #include <stdio.h>
    int main() 
    {
      printf("Hello\n");
    }
    

    3. 使用gcc编译

    $ gcc -g hello.c -o hello
    

    注:要使用gdb调试,需要传入-g参数。

    4. 运行一下

    $ ./hello
    Hello
    

    5. 使用gdb调试

    $ gdb ./hello
    
    GNU gdb (GDB) 8.3
    Copyright (C) 2019 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    Type "show copying" and "show warranty" for details.
    This GDB was configured as "x86_64-apple-darwin16.7.0".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
        <http://www.gnu.org/software/gdb/documentation/>.
    
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from hello...
    Reading symbols from /Users/.../hello.dSYM/Contents/Resources/DWARF/hello...
    
    (gdb) 
    

    光标停留在 (gdb) 后面了,等待输入调试命令。

    6. 在OSX不能调试

    (gdb) run
    Starting program: /.../hello
    Unable to find Mach task port for process-id 23330: (os/kern) failure (0x5).
     (please check gdb is codesigned - see taskgated(8))
    

    7. 解决方法

    7.1 应用程序中搜索:钥匙串

    7.2 创建证书

    菜单 - 钥匙串访问 - 证书助理 - 创建证书

    名称:gdb-cert
    身份类型:自签名根证书
    证书类型:代码签名

    勾选:让我覆盖这些默认值

    然后一直点“继续”,点到最后一步。
    选择,钥匙串:系统

    7.3 配置证书

    再回到钥匙串访问页面,右上角搜索:gdb-cert

    找到种类为证书的钥匙串,右键显示简介

    选择,使用此证书:始终信任

    7.4 命令行授权

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

    其中,gdb-cert为刚才创建的钥匙串名字,/usr/local/bin/gdbgdb的安装路径。

    7.5 重启电脑

    重启

    8. 重新使用gdb调试

    $ gdb ./hello
    ...
    (gdb) run
    Starting program: /Users/.../hello
    [New Thread 0x1103 of process 4375]
    [New Thread 0x1403 of process 4375]
    [New Thread 0x1503 of process 4375]
    Hello
    [Inferior 1 (process 4375) exited normally]
    

    参考

    GDB
    The GNU Project Debugger(GDB): Short Tutorial with Examples

    相关文章

      网友评论

        本文标题:[other] OSX使用gdb调试C程序

        本文链接:https://www.haomeiwen.com/subject/qbdaqctx.html