[解決済み] デバッガとはどのようなものですか?
質問
デバッガはどのように機能するのでしょうか?特に、すでに実行されている実行ファイルに「アタッチ」できるものは。コンパイラがコードを機械語に変換することは理解できますが、では、デバッガはどのようにして添付されているものを「知る」のでしょうか?
解決方法は?
デバッガの動作の詳細は、デバッグの対象やOSによって異なります。Windows でのネイティブデバッグについては、MSDN でいくつかの詳細を確認できます。 Win32 デバッグAPI .
ユーザーはデバッガーに、どのプロセスにアタッチするかを、名前またはプロセス ID で指示します。名前の場合、デバッガーはプロセス ID を検索し、システムコールを介してデバッグセッションを開始します。 デバッグアクティブプロセス .
しかし、ウィンドウシステムから来るイベントの代わりに、OS はデバッグ対象のプロセスで発生するイベント (例えば例外発生) に基づいてイベントを生成します。例えば、例外の発生などです。 デバッグイベント待ち .
デバッガはOSが提供するAPIを通じて、ターゲットプロセスの仮想メモリの読み書きや、レジスタの値の調整まで行うことができます。の一覧を参照してください。 デバッギング関数 Windowsの場合。
デバッガは、シンボルファイルの情報を利用して、アドレスから変数名やソースコードの位置への変換を行うことができます。シンボルファイルの情報は、別のAPIセットであり、OSの中核部分として存在するわけではありません。Windowsでは、これは デバッグインターフェースアクセスSDK .
マネージド環境(.NET、Javaなど)をデバッグする場合、プロセスは一般的に似ていますが、基盤となるOSではなく、仮想マシン環境がデバッグAPIを提供するため、詳細は異なっています。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
c言語における文字列のエラーになりやすい点
-
0xC0000005: 場所 0x00ef1000 の読み取りでアクセス違反が発生しました。
-
g++ コンパイルエラー解析 期待される型指定子 before
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] Chrome Developer Toolsでstatus=canceled for a resourceとはどういう意味ですか?
-
[解決済み】Windowsの.exeを「デコンパイル」することは可能ですか?または少なくともアセンブリを表示することはできますか?
-
[解決済み】Visual StudioデバッガがToStringオーバーライドの評価を停止する理由は何ですか?
-
[解決済み] デバッグ終了時にVisual Studio 2013がIIS Expressアプリを終了しないようにするにはどうしたらいいですか?
-
[解決済み] Visual Studioデバッガ - 整数値を16進数で表示する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
c言語における文字列のエラーになりやすい点
-
0xC0000005: 場所 0x00ef1000 の読み取りでアクセス違反が発生しました。
-
g++ コンパイルエラー解析 期待される型指定子 before
-
g++コンパイルエラー解析 "このスコープでは宣言されていません"
-
[解決済み] Chrome Developer Toolsでstatus=canceled for a resourceとはどういう意味ですか?
-
[解決済み] デバッガとはどのようなものですか?
-
[解決済み] クローム Uncaught SyntaxError: 予期しない入力の終了
-
[解決済み] twig テンプレートで変数を var_dump するには?
-
[解決済み] gdbで複数のコマンドを何らかのデリミタ';'で区切る?
-
[解決済み] dSYMとは何か、どう使うか?(iOS SDK)