2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

cdbでソースを表示させながらデバッグ

Last updated at Posted at 2020-03-07

はじめに

WindowsでC言語のプログラミングをする場合にデバッグをする方法として

  • Visual Studioを使う
  • WinDBGを使う
  • cdbを使う

などがあるが、CLIから離れたくない人はcdbくらいしか選択肢がない。

cdbを少し触って何とか使えるようになったので、備忘録を残す

cdbのインストール

cdbはDebugging Tools for Windowsに付属している。インストール方法はいろいろあるが、VisualStudioからWindows SDKをインストールするのか手っ取り早い。

参考:https://docs.microsoft.com/ja-jp/windows-hardware/drivers/debugger/debugging-tools-for-windows--new-for-windows-10

インストールしたらcdbにPathを通すのとシンボルファイルの環境変数を設定する必要があるらしい。(よく分かってない)

_NT_SYMBOL_PATH = "srvC:\Symbolshttp://msdl.microsoft.com/download/symbols"

コンパイル時にpdbファイルを生成

CLIから離れたくない人はコンパイルはcl.exeを使うと思うが、コンパイル時にpdbファイルを作成しないとデバッグ時にシンボルやソースを利用できない。clの/Ziオプションをつけるとpdbファイルが生成される

cl /Zi main.c

cdb起動時のオプション

cdbはデフォルトではディスアセンブリモードになっており、ソースは表示されない。なので、起動すると同時にソースモードにして表示オプションを設定する。

cdb -lines -c "l+s;l+o;l+l;l+t;" main.exe

ブレークポイントの設定

シンボルを読み込めているとモジュール名!関数名でブレークポイントを設定できる

bp main!main

また、ソースを正しく読めていればソースの特定の行にブレークポイントを置くこともできる

bp `main.c:8`

cdbでデバッグ

gコマンドでプログラムが実行される。最初にブレークポイントが置かれているので2回gコマンドを実行すると自分で設定した最初のブレークポイントまで実行される。
そのあとはステップ実行や変数表示をしながらデバッグする

g:実行
p:ステップオーバー
t:ステップイン
dv:変数表示
lsa .:周辺のソースを表示
q:終了
何も入力せずにEnter:前回のコマンドを実行

とりあえずこれだけ覚えておけばデバッグできそう

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?