分解図
CLion では、逆アセンブルされたコードを開くことができます
ソースが利用可能な場合、任意のフレームに対してオンデマンド
ソースが利用できないときに強制的にそこに踏み込むこと
フレームの分解ビューを開く
デバッグツールウィンドウで目的のフレームを右クリックし、逆アセンブルを選択します。
逆アセンブリビューがソースコードと並んで開きます。
開くと、分解ビューは現在選択されているフレームと同期したままになります。フレームが切り替わると、エディターと逆アセンブリビューの両方が実行ポイントまでスクロールします。
ソースが利用できないときに逆アセンブリビューを開く
コードをデバッグするときは、ステップイン F7 の代わりに強制ステップイン
Alt+Shift+F7 コマンドを使用してください。ステップインは、ソースコードのない関数ではステップオーバーのように機能します。
CLion がデバッグ中にソースファイルを見つけられない場合、逆アセンブリビューが自動的に開きます。これは、たとえば、偽の CMake プロジェクトを使用してカスタム実行可能ファイルをデバッグする場合、またはプロジェクト内にソースコードがない状態で CI 上にビルドされたライブラリがある場合に発生する可能性があります。
ソースを明示的に指定するには、通知でファイルの選択をクリックします。
デバッグツールウィンドウで目的のフレームに移動します。
デバッグ情報を提供しないアタッチされたプロセスのデバッグセッションを起動すると、逆アセンブリも自動的に開きます。
分解の手順
逆アセンブリビューでは、通常のステップアクションを使用してコードを調査できます。
![Disassembly view](https://resources.jetbrains.com/help/img/idea/2023.2/cl_disasm_lldb.png)
実行ポイントの設定アクションを使用して、逆アセンブリのコードの任意の行に移動することもできます。
![分解時に実行ポイントを設定する Set execution point in disassembly](https://resources.jetbrains.com/help/img/idea/2023.2/cl_disadm_exe_point.png)
分解のブレークポイント
ソースコードで行うのと同じ方法で、逆アセンブルでブレークポイントを設定できます。これらのブレークポイントは、アドレスブレークポイントと呼ばれます。
ブレークポイントを右クリックして、使用可能なオプションを表示します。
![アドレスブレークポイントのコンテキストメニュー Address breakpoint context menu](https://resources.jetbrains.com/help/img/idea/2023.2/cl_breakpoints_disasm_contextmenu.png)
さらにをクリックするか、Control+Shift+F8 を押して、ブレークポイントダイアログのアドレスブレークポイントを編集します。
![アドレスブレークポイントのプロパティ Address breakpoints properties](https://resources.jetbrains.com/help/img/idea/2023.2/cl_addressbreakpoints_properties.png)
アドレスにジャンプ
ジャンプフィールドを使用して、目的のコード行に移動します。このフィールドには、アドレス、またはアドレスに評価できる任意の式を入力できます。
式にレジスタを含める必要がある場合は、その名前を $
(GDB 表記(英語))で始めます。
![逆アセンブルビューの Go to フィールドのレジスターを参照する Refferring to a register in the Go to field of the disassembly view](https://resources.jetbrains.com/help/img/idea/2023.2/cl_disasm_goto_gdb.png)
アセンブリファイルでの構文のハイライト
構文のハイライトは、AT&T(英語) アセンブリコードで使用できます。
デフォルトでは、.s および .asm ファイルはアセンブリコードファイルとして認識されますが、他のタイプを構成できます。
に移動します。
認識されるファイルタイプのリストでアセンブリ言語を選択し、リストに新しい拡張子を追加します。
関連ページ:
![](https://resources.jetbrains.com/help/img/idea/2023.2/cl_debugtoolwindow_overview.png)
デバッグツールウィンドウ
デバッグセッションを開始すると、デバッグツールウィンドウが開きます。このウィンドウでは、さまざまなデバッガーアクションを実行し、プログラムデータ(フレーム、スレッド、変数など)を分析できます。これは、デバッグツールウィンドウの概要です。ツールウィンドウの使用に関する一般的な手順については、ツールウィンドウを参照してください。セッション:使用可能なデバッグセッションは、デバッグツールウィンドウの上部でタブに分割されています。特定の実行 / デバッグ構成に対してサービスウィンドウを有効にすると、こ...
![](https://resources.jetbrains.com/help/img/idea/2023.2/cl_debug_exteranlexe_attach.png)
任意の実行可能ファイルをデバッグする
CLion を使用して、任意のビルドシステムを使用して他の場所でビルドされた実行可能ファイルをデバッグできます。この記事では、アプリケーションに応じて選択できる 3 つのオプションについて説明します。どちらを使用しても、すべての CLion デバッグ機能がコードで完全に利用可能になります。要件は、バイナリにデバッグシンボルが含まれていて、ソースファイルが手元にあることです。オプション 1: 実行中のプロセスにアタッチする:最も簡単な解決策は、デバッガーをすでに実行中のプロセスに接続することです...
![](https://resources.jetbrains.com/help/img/idea/2023.2/cl_debug_overview_frames.png)
中断されたプログラムを調べる
デバッガーセッションの開始後、デバッグツールウィンドウが表示され、次のいずれかが発生するまでプログラムが正常に実行されます。ブレークポイントがヒットしました、プログラムを手動で一時停止する、その後、プログラムは中断され、現在の状態を調べたり、実行を制御したり、実行時にさまざまなシナリオをテストしたりできます。フレームとスレッド:プログラムの状態はフレームで表されます。プログラムが中断されると、現在のフレームスタックがフレームペインに表示されます。フレームはアクティブなメソッドまたは関数呼び出し
![](https://resources.jetbrains.com/help/img/idea/2023.2/cl_attachprocess_name.png)
プロセスに接続
CLion は、ローカルプロセスとリモートプロセスの両方にデバッガーを接続する方法を提供します。C/C++ アプリケーションの場合、Windows では GDB または MSVC LLDB、macOS では LLDB、Linux では GDB と LLDB の両方を使用してプロセスにアタッチできます。該当する場合は、他の言語のデバッガー (Python デバッガーなど) も使用できます。Ubuntu の前提条件 Ubuntu およびその他の Linux ディストリビューションでは、初めてプロセスに...
![](https://resources.jetbrains.com/help/img/idea/2023.2/cl_debugger_stepout_returnvalue.png)
ステップスルー
CLion は、さまざまなデバッグ戦略のための一連のステップアクションを提供します(たとえば、次の行に直接移動する必要があるか、途中で呼び出された関数を入力する必要があるかなど)。ステップアクションは、デバッガーウィンドウのツールバーとメニューにあります。ステップオーバー:現在の行に関数呼び出しが含まれている場合でも、現在の行をステップオーバーして、次の行に移動します。呼び出しはスキップされ、発信者の次の行に直接移動します。ステップオーバーボタンをクリックするか、を押します。スキップされたメ
![](https://resources.jetbrains.com/help/img/idea/2023.2/cl_set_execution_shortcut.png)
実行ポイントを設定する
実行ポイントの設定アクションを使用すると、デバッグセッション中にエディター内の任意のコード行に移動して、実行ポイントを設定し、その間にある他のすべてのコマンドをスキップできます。このアクションは、線形実行パスと非線形実行パスの両方で機能します。これを使用して、ループを中断してスキップするか、句またはステートメントで別のブランチを選択します。例: このアクションは、デバッグセッションを再開せずに別のブランチをチェックする場合に役立ちます。セット実行ポイントを呼び出す次のオプションのいずれかを使用し...