リブlab

理系大学生のIT・電気・大学・趣味についての日記

Visual Studioの使い方 画面を説明するよ 4 ~ デバッグ ~

 この記事の下書き更新したと思ったらされてなかった。やる気消滅マン。
はてブ様、僕みたいなマヌケの為に自動保存機能つけてくだしあ。(懇願)

 というわけで、どうもこんにちはリブです。
今回はデバッグ編ということで[デバッグ]メニューを見ていきましょう。

実際に見てみよう


[ウィンドウ]とは? [ウィンドウ]でできること


 [ウィンドウ]コマンドでは、第一回で説明した[表示]メニューと同じようなことができます。
 つまり、ツールバーよりも下に表示されているエラー一覧やクラスビューなどのウィンドウと呼ばれる画面領域を編集することができます。試しにブレークポイントを押してもらえれば分かると思います。

 では、次に[ウィンドウ]の中身を見ていきましょう。

ウィンドウ

 ウィンドウを開けるとブレークポイント、例外設定、出力、診断ツールの表示、イミディエイトウィンドウというリストが出てくると思います。
 これらを一つ一つ見ていきましょう。



ブレークポイント

 このウィンドウを表示することで自分が設定したブレークポイントの管理をスムーズに行うことができます

 では、そもそもブレークポイントとは一体何でしょうか。
これはデバッグ作業において実行中のプログラムを指定した箇所で一時停止させる機能があります。

 デバッグ作業に重宝されるのですが詳しく書き始めると[デバッグ]メニューの説明という本筋から外れますので、ひとまずそういうものがあるんだなとしておいてください。



例外設定

 [例外設定] ウィンドウを表示することで、デバッガーに実行を中断させる例外、およびデバッガーに実行を中断させるポイントを指定することができます

 例外を追加または削除したり、実行を中断する例外を指定したりすることができます。

 [例外設定]ウィンドウを表示させるとたくさんチェックボックスが出てくると思います。

 それにより特定の例外を選択することで、その例外が投げられるたびに、処理するか処理しないかに関係なく、デバッガーの実行を停止することができます

 ちなみにですが、[例外]はプログラムの実行中に発生したエラー状態を表します。

 これも詳しく書き出すと本筋から逸れるほど長くなるので別の機会に。記事を書いたらリンクを貼っておきますが、忘れていたら一声いただけたら幸いです。



出力

 これは、まあ[表示]にもありましたよね。出力結果(ビルドからなどの)を表示してくれます。
 ビルド結果やデバックの結果が表示されますね。



診断ツールの表示

  診断ツールというメモリ使用量を把握するためのツールです。
 この辺はメモリリークなどの言葉に馴染みがでてきてから使い始めるかも。。。
  使い方に関しては公式のサイトが非常に分かりやすいです。

アプリのメモリ使用量を測定する - Visual Studio | Microsoft Docs


 要望があれば僕もより分かりやすくするか、実際に試せる環境を用意しようとは思います。
  ここで、じゃあ孟の記事じゃなくて公式見れば使い方が全部載ってるんだと皆さん思われると思うのですが。実はそう易しいサイトではなくてですね。
写真があれば良いのですが著作権の都合上リンク張っておきます。

Visual Studio のドキュメント - Visual Studio | Microsoft Docs

 ここ見てもらえれば分かるんですけど、どこどの機能があるのかを探すのが大変なんですよね。

 誰か「この処理が(デバッグとかが)したい!」
 マイクロソフト「それならここを見たらデバックのやり方が一通り載ってるよ!」

という感じのために、このメニューで何ができるの?っていう「何ができるのか」が知りたい場合に使いにくいんですよね。

「これをしたいならこれ使って」としか教えてくれないので、「これはなんだろ?」となった時に一個一個調べないといけません。それは大変ですよね。

 それを省くためにこの記事があります。僕は基本的に既に有って、書き直すような記事は書くつもりはないです。自分が不便だったことを元に改善した記事などを出します。

ということで、今後ともよろしくお願いします。


[グラフィックス]とは? [グラフィックス]でできること

 とか見出し書いときながらよくわかりません。調べてもよくわかりませんでした。ごめんなさい。専門外です。
一応分かったことは、directX使ってる方が使うものらしいです。GPUコードのデバッグに使うそうです。
多分これに関わっている人はこの記事見る必要ない人しかいないと思います。
知人がDirectX使ってるので今度聞いてみます。

デバッグ]とは? [デバッグ]でできること

 [デバッグの開始]を押すとビルドして(コンパイルもこの時に)プログラムを実行してくれます。

 [デバックなしで開始]を押すとビルドして(コンパイルもこの時に)プログラムを実行してくれます。

 一緒じゃねぇか!コピーミスかよ!
 いいえ、あってます。では、この二つの違いはなんでしょうか。そのまんまです。デバックするかしないかです。
意味わかりませんよね。解説します。

解説

 デバッグすると、エラー検出などの動作確認用データを埋め込んだり確認用の処理を通したりするようにプログラムを作り上げます。
ステップコマンドやブレークポイントなどの機能が使える!
デバッグなしではそれができないんですね。勿論、エラーとかはビルドする時に出ます。

unityデバッガのアタッチ

 これはUnityというゲームエンジン(ゲームが簡単に作れる凄いソフトウェア)に利用します。Unityのためのコードにデバッグを利用したい時に利用するらしいです。

パフォーマンスプロファイラ

 下のサイトに昔お世話になったのでわざわざ僕が書く必要ないのでリンク張っときます。

Visual Studioのパフォーマンスプロファイラー - Qiita

 めんどくせー!って人のために簡単に説明すると診断ツールが出てきます。

プロセスのアタッチ

 「プロセスのアタッチ」とはVisual Studioで作成しているプログラム以外のアプリケーション(プロセス)に対してデバッグを行う機能です。
プログラム内で外部のアプリケーションを使用している際、外部アプリケーションで発生したエラーなどを具体的に特定する場合などに使用します。

[ステップイン]とは? [ステップオーバー]でできること

 まず、[ステップイン]と[ステップオーバー]を使うには、ブレークポイントを設定します。ブレークポイントはバグの原因と思われる行に設定します。
ブレークポイントを設定することで、私たちはその行を実行する前の段階でそのプログラムがどういった挙動をとっているのか知ることができます。

 さらに、問題が発生しているコードの領域を特定するのが困難な場合は、問題が発生する前に実行されるコードにブレークポイントを設定した後、問題の兆候が現れるまでステップ コマンドを使用することができます。
 [ステップイン]では、その行から一行ずつ次の処理へと向かいます。関数があればその中に入って一行ずつ進みます。

 [ステップオーバー]では同じように一行単位で処理されますが、関数の行に辿り着くと実行はしますが、関数の中までは入らずに次の行に向かいます。
これはライブラリの奥まで進みたくないときなどによく使われると思います。

終わりに

 今回でvisual studioの紹介は一旦終了します。
時間ができたのでブログを更新していきます。そして、今回の記事を書く前に過去の記事を見直しました。色々反省点が見つかったので、次回は反省点を共有したいと思います。