LoginSignup
3
0

More than 1 year has passed since last update.

Emacs + dap-modeでGoプログラムのデバッグをする

Posted at

Emacs lsp-mode の導入はすでに済んでいたので、今度は dap-mode を導入してデバッグをしたい。
いろいろ躓きながらなんとか導入はできたので備忘録として残します
あまり文献もなかったので。。。

環境

私の作業環境はこちらです

  • macOS BigSur 11.2.3
  • GNU Emacs 27.1
  • Go 1.15
  • Node.js v14.4.0

必要なツールのインストール

まずはGoの言語サーバである gopls のインストール

$ go get golang.org/x/tools/gopls@latest

次にデバッグ用のプログラムをインストール、VSCode向けの拡張プログラムが使えるとのことなので、そちらの準備をします
こちらは Node.js でのビルドが必要なようです

// リポジトリのクローン
$ git clone https://github.com/golang/vscode-go
$ cd vscode-go

// 必要なJSモジュール群をインストール
$ npm install

// 拡張プログラムのビルド
$ npm run compile

Emacsの設定

これで必要なツールは揃ったのでここからはEmacsの設定ファイルを編集します。

前提として、私は straight.el というパッケージ管理ツールを使用しています
他のツールを使っている場合は適宜読み替えてください
straight.el の導入についても記事を書いているので興味のある方はそちらも見てみてください
https://qiita.com/yoooz/items/8a97642086611892f4c3

(use-package dap-mode
  :defer t
  :after lsp-mode
  :config
  (dap-mode 1)
  (dap-auto-configure-mode 1)
  (require 'dap-hydra)
  (require 'dap-go)
  :custom
  (dap-auto-configure-features '(sessions locals breakpoints expressions repl controls tooltip))
  (dap-go-debug-path "path/to/vscode-go/repository")
  (dap-go-debug-program `("node", (f-join dap-go-debug-path "dist/debugAdapter.js")))
  )

注意

dap-mode に同梱されている dap-go のデフォルトだと、下記変数のデフォルト値ではうまくいきませんでしたので、上記のように設定しています

  • dap-go-debug-path
  • dap-go-debug-program

使い方

設定が完了したらEmacsを再起動するか設定を反映して、Go のプログラムファイルを開きます

エディタの左側、フリンジ部分をクリックすることで ブレークポイントを設定することができます
スクリーンショット_2021-04-25_17_40_39.png

ブレークポイントを設定したらデバッグ起動しましょう

M-x dap-debug

どの設定を使用するか聞かれるので Go Launch File Configuration を選択(もしくは入力)してください

下記のようなWindow構成となり、デバッグが可能になります
スクリーンショット 2021-04-25 17.44.38.png

終わりに

以上で dap-mode の導入は完了です
dap-mode 自体の機能についてはまだこれから触って行くつもりです
VSCode や Goland のような便利ツールを使うのもいいですが、EmacsやVimの方が小回りが効いたりするので、気が向いたときに改造していくのは楽しいですね

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0