【萌新】Mac OS 安装Emacs+GDB开发环境

【萌新】Mac OS 安装Emacs+GDB开发环境

为了与实验室用机的编程环境一致,开始了在Mac上安装Emacs和gdb历程。反复多次,综合了许多前辈的经验,在这里把我的安装过程记录一下,留作备用。

版本信息

  • Mac OS High Sierra, version 10.13.6 (苹果小图标About this Mac选项查得)
  • Emacs 26.1 (Terminal 指令:emacs --version)
  • GNU gdb (GDB) 8.0.1 (Terminal 指令:gdb --version)

下载并安装Emacs

用Homebrew安装最新版本,Terminal中指令:

brew install emacs --with-cocoa

配置.emacs文件

由于是萌新,尝试用实验室的emacs配置,与自己的Mac一致。
官方的配置说明在这里:https://www.emacswiki.org/emacs/InitFile
由于找不到原始的.emacs文件,参照官方的说明在emacs中创建了新的文件init file,并将配置文件贴在里面,生效buffer。但是后果是每次重新使用emacs时要再次生效buffer。尝试以下操作,也就是找到.emacs文件并在其中加入个人配置,并生效,这样就配置成功了1
以下的步骤参考于注释1。方法在于先修改emacs的某项设置,并顺势找到.emacs文件并修改,文章以关掉闪动图标为例:

  1. 打开emacs,输入 M-x customize 进入用户设置界面 (mac的meta键,也就是M,是esc)
  2. 在下面找到Environment链接并进入,继续找到Frames并进入
  3. 在下面subgroups中找到Cursor并进入
  4. 找到Blink Cursor Mode 点击前面的三角形,点击Toggle 将模式改为off
  5. 点击state再按1,保存设置
  6. C-x C-f(查找或创建文件)~/.emacs 回车找到并打开配置文件
  7. 填入配置文件。配置文件使用lisp写的,一般找现成的就可以。其中“;”符号为注释。这里主要是设置背景颜色和一些快捷键。我这里注释掉了一条设置因为在生效的时候未成功。其中比较重要的是快捷键C-x C-u在emacs中打开一个shell,这样对于程序的编译和运行都可以在emacs中进行,比较方便。另外也可以开启行数显示2,debug时很方便。
	 '(default ((t (:background "#B4EEB4")))))
(global-font-lock-mode t)
(global-set-key "\C-xs" 'save-buffer)
(global-set-key "\C-xv" 'quoted-insert)
(global-set-key "\C-xg" 'goto-line)
(global-set-key "\C-xf" 'search-forward)
(global-set-key "\C-xc" 'compile)
(global-set-key "\C-xt" 'text-mode)
(global-set-key "\C-xr" 'replace-string)
(global-set-key "\C-xa" 'repeat-complex-command)
(global-set-key "\C-xm" 'manual-entry)
(global-set-key "\C-xw" 'what-line)
(global-set-key "\C-x\C-u" 'shell)
(global-set-key "\C-x0" 'overwrite-mode)
(global-set-key "\C-x\C-r" 'toggle-read-only)
(global-set-key "\C-t" 'kill-word)
(global-set-key "\C-p" 'previous-line)
(global-set-key "\C-u" 'backward-word)
(global-set-key "\C-o" 'forward-word)
(global-set-key "\C-h" 'backward-delete-char-untabify)
(global-set-key "\C-x\C-m" 'not-modified)
(setq make-backup-files 'nil)
(setq default-major-mode 'text-mode)
(setq text-mode-hook 'turn-on-auto-fill)
;;(set-default-font "-misc-fixed-medium-r-normal--15-140-*-*-c-*-*-1")

;(require 'font-lock)
;(add-hook 'c-mode-hook 'turn-on-font-lock)
;(add-hook 'c++-mode-hook 'turn-on-font-lock)

;;line-number-mode
(global-linum-mode t)
  1. 最后M-x eval-buffer生效配置文件就可以了。

安装gdb (Terminal)

  1. 首先确定Mac中是否有gdb3,我的电脑里时没有的,参照链接方式,先更新homebrew软件库:

    brew update
    
  2. 确定软件库中有gdb:

    brew search gdb
    

    显示如下:【萌新】Mac OS 安装Emacs+GDB开发环境_第1张图片

  3. 安装gdb:

    brew install gdb
    

证书签名

到这里如果直接使用gdb指令会出现如下报错:

please check gdb is codesigned - see taskgated(8)

此时要为gdb创建签名方式为codesigned的证书。
网上有很多在Mac上为gdb创建证书的教程攻略4。我按照我遇到的问题及步骤写下来,主要参考注释[4]的博文。

  1. 打开Keychain Access应用,工具栏中点击keychain access选择第三项Certificate Assistant,然后选择第二项Create a certificate…,然后起一个名字,证书类型选为Code Signing,下面的Let me override default也要勾选。
【萌新】Mac OS 安装Emacs+GDB开发环境_第2张图片
  1. 证书时常按需填入。
【萌新】Mac OS 安装Emacs+GDB开发环境_第3张图片
  1. 一路continue到指定证书位置,这里应该选填系统 (System),由于随后创建不成功,直接选择默认的Login,点击Create,创建完成后拖入System栏。
【萌新】Mac OS 安装Emacs+GDB开发环境_第4张图片
  1. Keychain AccessSystem栏里找到刚创建好的证书,双击,并在对codesign信任栏里选择始终信任。
【萌新】Mac OS 安装Emacs+GDB开发环境_第5张图片
  1. 关闭taskgated进程:
    找到Activity Monitor应用,在CPU 栏下搜索taskgated进程,并quit

  2. 生效证书,语句生效证书,语句:

    codesign -s gdb_cert /usr/local/bin/gdb
    

    -s 后面是证书名,随后是gdb的地址,也可以用 $(which gdb) 代替
    没有输出表示声明成功.

    后续如果出现验证证书的问题,可以先用以下指令看一下证书是不是成功了:

    codesign -v  /usr/local/bin/gdb
    

    同样没有输出即可。

    注:其他方法中会在这里再次杀死taskgated进程,因为它后自动重启了。但我在这一步去活动监视器找进程的时候发现没有taskgated进程,就重启了下电脑。

Downgrade GDB

至此尝试运行gdb,但在run程序的时候又出现了如下报错:

During startup program terminated with signal SIGTRAP, 
Trace/breakpoint trap.

查找发现是高版本的gdb与高版本的Mac OS有不兼容的地方,于是尝试进行GDB版本降级5到8.0.1:

brew unlink gdb
brew install https://raw.githubusercontent.com/Homebrew
/homebrew-core/9ec9fb27a33698fc7636afce5c1c16787e9ce3f3/Formula/gdb.rb

其他报错

由于我的整个安装过程出现了各种错误,有的前后顺序已经记不清了,最后这个应该是遇到的最后一个问题,关于SIP保护机制的。
如果此后还有其他情况,再在此处添加问题和解决办法。

  1. 重启后运行GDB, run程序的时候出现以下报错:

    During startup program terminated with signal ?, Unknown signal.
    

    这是SIP (System Integrity Protection) 问题6高版本的系统保护机制阻止了gdb的运行,关闭SIP:

    在重启瞬间,按住command+R键直到出现苹果图标和进度条,稍等后进入Recovery Mode。注意不是在重启完成后,此时还未登录密码进入启动过程。
    关闭弹出的页面。在上方工具栏中选择Terminal,并输入以下指令:

    csurtil enable --without debug
    

    重启计算机后运行gdb即可。

P.S. 至此是我在安装过程中遇到的所有问题和相应的解决方法,初到异国,转专业学习开始,一个小小的问题折磨了我近一周,不过解决的时候还是蛮开心的。希望以后的自己在遇到此类问题的时候也能平心静气,一步步,慢慢来。


  1. https://blog.csdn.net/nixebo/article/details/70196732 ↩︎

  2. https://www.emacswiki.org/emacs/LineNumbers ↩︎

  3. https://blog.csdn.net/github_33873969/article/details/78511733 ↩︎

  4. https://blog.csdn.net/lllkey/article/details/79423596 ↩︎

  5. https://blog.csdn.net/lifujie1554883155/article/details/79661584 ↩︎

  6. https://blog.csdn.net/slvm_lj/article/details/69226927 ↩︎

你可能感兴趣的:(【萌新】Mac OS 安装Emacs+GDB开发环境)