Edited at

nimのデバッグ

More than 1 year has passed since last update.


概要

2018/09/10 VSCodeによるNimのデバッグを追加しました。VSCodeによるステップ実行ができます。

nimでのデバッグ・ステップ実行の手段は今のところ2種類あるようです。


  • デバッグオプションを指定して実行

  • KDevelopでnimプラグインを利用してデバッグ(おすすめ!!nim-0.14.0でも可能です)


デバッグオプションで実行

以下のようなコマンドラインで実行すると、起動時にプロンプトモードとなります。

Embedded Nim Debugger

注意:Emedded Nim Debuggerは、もうメンテされていないようで、次のバージョンで使えるかどうかはなんとも言えないようです。

# 実行例

nim c --run --debugger:on ref_basic.nim

実行結果

$nim c --run --debugger:on ref_basic.nim

Hint: system [Processing]
Hint: ref_basic [Processing]
Hint: strutils [Processing]
Hint: parseutils [Processing]
ref_basic.nim(14, 7) Warning: 'l' should not be used as an identifier; may look like '1' (one) [SmallLshouldNotBeUsed]
ref_basic.nim(16, 5) Warning: 'l' should not be used as an identifier; may look like '1' (one) [SmallLshouldNotBeUsed]
ref_basic.nim(20, 1) Warning: 'l' should not be used as an identifier; may look like '1' (one) [SmallLshouldNotBeUsed]
ref_basic.nim(22, 8) Warning: 'l' should not be used as an identifier; may look like '1' (one) [SmallLshouldNotBeUsed]
ref_basic.nim(24, 5) Hint: 'i' is declared but not used [XDeclaredButNotUsed]
Hint: [Link]
Hint: operation successful (12979 lines compiled; 0.306 sec total; 20.209MB; Debug Build) [SuccessX]
*** endb| ref_basic.nim(15) ref_basic ***
*** endb| >> (<-デバッガが起動して、コマンド待ち状態です)

これ以降は、コマンドにてブレークポイントを設定したり、ステップイン・ステップオーバー、ステップアウトなどを実行していきます。

コマンド
内容

h
ヘルプを表示

q
デバッガを終了

s
ステップイン

n
ステップオーバー

f
現在の行の実行をスキップ

c
実行を継続

r
ブレークポイントか終了まで実行(cと同じかな?)

b
ブレークポイントを設定
例)
test.nim の10行目にブレークポイントを設定
b 10 test

toggle
ブレークポイントのON/OFFを設定する
例)
toggle 10 test

i
ブレークポイントをすべて無視する

breakpoints
ブレークポイント一覧を表示

l
ローカル変数の値を表示

g
グローバル変数の値を表示
(うまく動きませんでした・・・)

e
式の評価を行う
(うまく動きませんでした・・・)

stackframe
コールスタックの表示

bt
バックトレース(コールスタック)の表示(python風?)

w
現在の行位置を表示します

ソースコード内にも、プラグマを利用して、ブレークポイントやウォッチポイントを指定出来ます。


Kdevelopでのデバッグ

CentOS7のGnome環境でKDevelopを実行してみましたが、かなり快適です。

当面は、KDevelopでnimの勉強が捗りそうです。

追記: 2016/6/10

nim-0.14.0での動作も確認できました。