問題タブ [gdb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gdb - ファイルXの関数を使用しているときにgdbを使用してプログラムを停止します
特定のファイルの関数を使用しているときにプログラムを停止する方法があるかどうかを知りたいです。理想的には、私が探しているのは次のようなものです:
これを行う理由は、自分のものではないコードをデバッグしていて、どの関数が呼び出され、どの関数が呼び出されていないのか正確にわからないためです。私が探していることを行うためのGDBの機能、または同様のことを行うための他の推奨される方法はありますか?
ありがとう
debugging - gdb を使用して、複数の変数を 1 行に表示しますか?
複数の変数を 1 行に表示するにはどうすればよいですか? だから私は次のような出力を得たい:
私は disp s[i] ENTER disp exp ENTER (など) と入力してきましたが、1 行の入力でこれを行うためのより良い方法が必要であることを知っています。
c++ - Xcode デバッガーで動的に割り当てられた配列を表示しますか?
C++ に配列があるとします。
GDB コマンド ラインを使用して、次のコマンドでこの配列を表示できます。
そして、配列内のすべての double 値のきれいにフォーマットされたリストを出力します。
ただし、Xcode デバッガーを使用する場合、ほとんどの場合、これを単一の double 値へのポインターとして扱い、変数リストに速度 [0] を表示します。
これにより、動的に割り当てられた大きな配列を含むプログラムをデバッグするのは本当に PITA になります。Xcodeに「これは長さ100の配列へのポインタです」と伝え、そのように表示させる方法が必要です。誰がそれが何であるか知っていますか?
c++ - GDB にブレークポイントのリストを保存させる
OK、info breakはブレークポイントを一覧表示しますが、この質問のように--command を使用してそれらを再利用するのに適した形式ではありません。GDB には、再度入力できるファイルにそれらをダンプする方法がありますか? デバッグ セッションでは、テスト用に一連のブレークポイントを作成した後に GDB を再起動する必要がある場合があります。
.gdbinit ファイルには --command と同じ問題があります。info breakコマンドは、コマンドを一覧表示するのではなく、人間が使用するための表を一覧表示します。
詳しく説明するために、 info breakのサンプルを次に示します。
debugging - セグメンテーション違反の行番号
セグメンテーション違反の行番号を表示するように設定できる gcc オプションはありますか?
自分ができるということがわかっている:
- 行ごとにデバッグする
- コードにprintfsを入れて絞り込みます。
編集:
bt
/where
gdbでスタックなし。- 役立つ提案
gdb - プログラムの双方向デバッグまたは逆デバッグを行う方法は?
実際に可逆デバッガを使った人はいますか? Google が見つけた唯一の製品はUndoDBです。どうやらLinux専用です。
eclipse - CygwinのGDBに実行可能ファイルへのposixパスを与えるようにEclipseを取得するにはどうすればよいですか?
Windows で Eclipse を使用して、Cygwin のツールチェーンを使用して C++ をプログラミングしています。デバッグにも使用したいのですが、私の問題は次のとおりです。
- デバッグする実行可能ファイルは、ワークスペースのサブフォルダー (かなり標準的だと思います) にありますが、実行可能ファイルのビルド元の実際のプロジェクトにはありません。
- Eclipse と GDB のパス形式は異なります。Eclipse は Windows パスで動作しますが、GDB は posix パスで動作します。Eclipse は知っていますが
D:\Path\To\Exe
、GDB は必要/cygdrive/d/Path/To/Exe
です。 - 「デバッグ構成...」ダイアログにパスを入力すると、デバッグする実行可能ファイルを見つけることができるとEclipseが主張します。パスが正しくなるまで、[デバッグ] ボタンは無効になります。
${workspace_loc}
Eclipse はその特定の入力ボックスを受け入れないようです。
私が知らない隠しオプションはありますか?以前に問題が発生したことがありますか?
これまでに試したこと
- 入力したパスを Eclipse に強制的に GDB に渡す --- 機能しませんでした。
- ソース ルックアップ パスとパス マッピングをいじる ---機能しませんでした。実際には、ソース ファイルのためだけです。
- 実行可能ファイルがある出力フォルダーの C++ プロジェクトを作成すると、プロジェクト内の exe への相対パスを指定できます ---機能しませんでした。
まだ試すことができること
- このファイルを使用して、
.gdbinit
Eclipse によって指定されたパスを破棄し、実際の実行可能ファイルを posix パスでロードします --- 試してみましたが、それほど難しくはありませんでした。 - GDB への引数としてラッパーを指定します --- ワークスペースのルートを汚染します。
- ケースに対処するために独自のプラグインを提供します --- 別の言語で維持する別のコードを追加します。
debugging - インライン関数で gdb を使用する
gdb
クラッシュしたプロセスのコア ダンプを使用して事後分析モードで使用しようとしています。スタック トレースを取得できますが、問題の関数の実際の場所を表示する代わりにgdb
、問題の関数が呼び出す 2 行のインライン関数の行番号が表示されます。
インライン関数は、非常に多くの場所で呼び出されます。クラッシュを引き起こした呼び出しを見つけるにはどうすればよいですか? インライン関数のすぐ周りのコードを見つけるにはどうすればよいですか?
iphone - 実行時に iPhone アプリがデバッガーで実行されているかどうかを確認する方法はありますか?
デバッガーで実行している場合、エラー処理コードの動作を変更したいと考えています。具体的には、デバッガーに接続されていないハンドセットで実行していて、アサーションに失敗した場合、サーバーにエラーを送信したいと考えています。gdb の下にいるときに、デバッガーに侵入したいと考えています。
Apple がどのようにコードを作成するかは想像できますが、デバッガーの存在をテストする実行時の方法に関するドキュメントは見つかりません。