問題タブ [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.
debugging - GDBで型属性を出力するにはどうすればよいですか?
GDB内からtype属性を出力する方法はありますか?
例:整数'サイズ。
debugging - QtCreator で gdbmacros.cpp を使用するにはどうすればよいですか?
Linux の QtCreator でデバッグしようとすると、次のメッセージが表示されます。
デバッグされたバイナリには、Qt データ型の適切な表示に必要な情報が含まれていません。
ファイルを含めてみてください
.../share/qtcreator/gdbmacros/gdbmacros.cpp
プロジェクトに直接。
~/qtcreator/gdbmacros/gdbmacros.cpp をプロジェクト ファイルに追加しても解決しません。
何か案は?
debugging - GDBでメモリアドレスのシンボル名を取得するには?
たとえば、0x46767f0 が NSString* に属していることはわかっていますが、探しているバグを見つけるのに役立つ NSString を見つける方法はありますか?
dynamic - 変数の値を含む gdb を介した完全な制御フローを出力します
アイデアは、プログラムに特定の入力が与えられると、どういうわけか自動的に完全なプログラムにステップインし、その制御フローを、クラスとその変数のように使用されているすべてのデータと共にダンプしたいということです。これを行う簡単な方法はありますか?または、これは gdb を介したスクリプトによって実行できますか、または gdb で変更する必要がありますか?
この質問の理由は、デバッグ ツールに関するアイデアのためです。それがすることはこれです。プログラムに 2 つの異なる入力が与えられた場合、1 つは正しくない出力を引き起こし、もう 1 つは正しい出力を引き起こした場合、制御フローのどの部分が異なるかがわかります。
したがって、必要になると思うのは、差分エンジンに入るこれら 2 つの制御フローの完全なダンプです。そして、2 つの入力が同様の制御フローに従っている場合、(多くの場合) それらの diff は、バグが存在する理由についての良いアイデアを提供します。
これは、その上に構築された多くの機能を備えた非常に魅力的なツールにすることができます。
dynamic - 次のN実行行をGDBで自動的に印刷する方法は?
私はしばらくの間、プログラムの制御フローをトレースする GDB の進行を自動化する方法を見つけようと試みてきました。
コマンドを自動化する簡単な方法でも、n
ルーチンが呼び出される順序を確認できます。
n x
x が GDB のステップ スルー回数である場合、問題が発生する可能性があることは認識していますが、問題は、コマンドは表示されますが、ルーチンのアドレスは表示されないことです! ただしn
、GDB で手動で押すと (次に Return キーを押して前のコマンドを発行すると)、アドレスが表示されます。
GDBで次のことを試しました:
GDBは言い<breakpoint 1 at 0x123456>
ます。私はタイプする:
しかし、期待どおりにループせず、アドレスの場所も表示されません :-(.
どんな助けでも大歓迎です!確かに、ルーチンが呼び出された順序を自動的に記録するのは簡単に違いありません??
c - gccを使用した共有ライブラリでの「-g」の伝播
私はプログラムを持っていabc
ます。 ライブラリをabc
使用し、次にライブラリを含めます。def
def
ghi
現在、libghi.so
を使用してコンパイルおよびリンクされていgcc -g
ます。 またlibdef.so
、を使用してコンパイルおよびリンクされます。ただし、とはリンクされていません。gcc -g
abc
-g
問題は、でデバッグabc
する場合、とgdb
の記号を表示できるかどうかです。def
ghi
プロジェクトはかなり大きく、コンパイルには数時間かかります。そのため、自分でテストする前に質問しています。
assembly - x86はアドレスにジャンプします
セキュリティクラスの割り当てとして、__asm__("jmp 0xbffff994");
コードで使用しようとしていますが、gdbで逆アセンブルすると、命令がに変更されjmp 0xc8047e2a
ます。特定のアドレスにジャンプする理由と方法はありますか?
c++ - gdbを使用したデバッグ-ベストプラクティス
私はGDBの初心者であり、正しく機能するようになりました。しかし、これが大きなプロジェクトでどのように使用されているのか疑問に思っています。makefileとg++を使用してビルドを行うプロジェクトがあります。GDBを機能させるには、デバッグシンボルをオンにしてコンパイルする必要があります(g ++ -gファイル)。
質問
- make debugのようなデバッグビルドを作成できるように、makefileに「debug」のような新しいターゲットを作成する必要がありますか。これはベストプラクティスですか?
- foo.cppのみをデバッグする必要があり、mainを含むプログラム全体をビルドする以外の目的でのみデバッグシンボルを生成することは可能ですか?
何かご意見は?