• 【转】Mac上Gdb安装和使用的过程


    转载声明

    本文仅作笔记供参考, 原文链接:https://blog.csdn.net/wj1066/article/details/83653153

    0.1 背景

    Gdb是一款代码调试工具。Mac下依旧支持,但是由于MacOS系统本身以及版本不协调等原因使用过程会遇到各种各样的问题。本文详细记录了从Gdb安装,钥匙串配置,与VScode结合调试的过程。

    0.2 版本

    Mac版本:macOS High Sierra 10.13.6

    Gdb版本:8.0

    1 Gdb安装

    1. 最快捷的方法是使用brew来安装,命令如下。

    brew install gdb

    1. 目前(2018.11.2)brew install 默认会安装8.2版本,但是在后续使用的过程遇到了一些问题(Mac high Sierra和gdb8.0以上的版本有很多地方不兼容,强烈不建议使用),所以不建议使用这个版本。笔者建议使用8.0的版本,8.0安装如下方式。

    点击这个链接下载8.0源码的安装包 http://ftp.gnu.org/gnu/gdb/gdb-8.0.tar.gz 然后解压。进入解压后的目录,依次执行如下命令。

    配置
    ./configure
    
    编译
    make -j4
    
    安装
    make install
    
    查看gdb版本
    gdb -v
    

    一切顺利的话可以看到gdb的版本为8.0。

    2 配置调试权限

    如果这时候直接调试程序会遇到如下错误。

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

    这是因为Darwin内核在你没有特殊权限的情况下,不允许调试其他进程。调试某个进程,意味着对这个进程有完全的控制权限。所以出于安全考虑默认是禁止的。所以允许gdb控制其它进程最好的方法就是用系统信任的证书对它进行签名。

    2.1 创建证书

    command+空格键,输入钥匙串访问。
    菜单上点击钥匙串访问->证书助理->创见证书
    填写如下信息
    名称:gdb_codesign
    身份类型:自签名根证书
    证书类型:代码签名
    勾选:让我覆盖这些默认设置
    之后一直next,直到出现“指定证书位置”,选择系统,然后完成。
    之后在左侧边栏上边选择“系统”,下边选择“我的证书”可以看到创建的证书,然后双击。展开“信任”这一项,选择“始终信任”。
    关掉窗口,此时需要验证密码。
    如果在最后一步选择了“系统”,但是完成后提示“未知错误=-2xxxxxxxx”,可以先以登录的方式创建证书。然后在登录栏中找到,拖到桌面上,然后再拖回系统栏中。其他操作相同。

    2.2 对gdb签名

    Terminal中执行下列命令
    codesign -s gdb_codesign gdb

    如果提示找不到gdb则指定gdb的全路径(如果用brew下载的话, 可以输入brew info gdb, 找到那个,然后按住command,继续

    2.3 重启

    否则签名不会生效。

    Reference

    1.解决GDB在Mac下不能调试的问题:https://segmentfault.com/a/1190000004136351

    2.XGBoost解析系列-准备:https://blog.csdn.net/matrix_zzl/article/details/78571349

  • 相关阅读:
    Office 转 PDF & PDF 转 SWF Windows版
    Office 转 PDF & PDF 转 SWF Linux版
    MP4Box 编译 和相应命令
    CentOS VNC 安装与配置,方便进行运程桌面连接
    系统时钟&&硬件时钟
    IPtables中SNAT、DNAT和MASQUERADE的含义
    配置SNAT实现共享上网
    DNAT & SNAT
    linux应急操作
    linux-清理linux空间
  • 原文地址:https://www.cnblogs.com/tyner/p/12275516.html
Copyright © 2020-2023  润新知