問題タブ [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.
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を含むプログラム全体をビルドする以外の目的でのみデバッグシンボルを生成することは可能ですか?
何かご意見は?
gdb - 「監視」GDB を使用するにはどうすればよいですか?
「watch a」コマンドで「int a」の変化を見てみました。しかし、プログラムは 12 に変わっても停止しません。なぜですか?
gdb - GDB ブレークポイントの同じ関数が複数回表示される
gdb を使用すると、奇妙な問題が発生しました。3 回表示されるメソッドがあります。
3 つのインスタンスすべてがファイル Logger.cpp の 552 行目にあるという事実から、実際には同じメソッドを参照していると推測できます。これはどういう意味ですか?Logger::Logger コンストラクターが誤ってバイナリに 3 回入りましたか、それとも gdb のバグですか?
multithreading - gdbのブレークポイントに達したときに、他のすべてのスレッドの実行を停止することは可能ですか?
それで、あるスレッドでブレークポイントに到達するとすぐに、続行するまで他のスレッドを停止することは可能ですか?
cocoa - (Xcodeを介して)gdbで定数を出力して使用するにはどうすればよいですか?
xcode-gdbを使用してCocoaアプリケーションをデバッグしています。私はブレークポイントにあり、いくつかのCocoa定数(つまりNSControlKeyMask)の値を表示し、現在のスタックフレームの値を使用してテストを実行したいと考えています。具体的には私は
そして私はやったdbプロンプトで。今やりたいdbは、「現在のコンテキストではシンボル「NSControlKeyMask」はありません」と言っています。
更新:
Xcodeには「テキストの修正と続行」機能があります。そこで、この機能でDan M.とn8grayソリューションを使用したので、すべての定数のプロキシを作成する必要はありません。
objective-c - gdb を使用して Objective-C プログラム (Apple が提供する pbcopy) をデバッグするには?
Objective-C プログラムをデバッグする必要があります。main() function にブレークポイントを設定すると、次のようになります。
返信から「開始」を呼び出すと、同じエラーが返されます。max os x ではやり方が違うのではないでしょうか?
目的のCプログラムと同等のものは何ですか?
ところで、exit() 関数を中断する方法は?
編集: Lyndsey によって提案された -[NSApplication run] を破ってみます
それは非常に奇妙です.gdbはどのようにしてシンボルのアドレスを見つけるのですか?しかし、私は ld が再配置を行う必要があると思うので、それは私を傷つけません。スタックトレースを見ると、たくさんあります?? ここでは、アプリケーションをトリガーする通常の方法は使用しないと仮定します (?? 大きな仮定 ...:/)
debugging - カーネルをクラッシュさせるユーザーランド コードのポイントを見つける必要があります
システムを激しくクラッシュさせる大きなシステムがあります。起動すると、コアダンプすらありません。システムがダウンするまで実行されるすべての行をログに記録するとします。私はその邪悪なコードを見つけます。
GDB のすべてのソース コード行をファイルに記録できますか?
アップデート:
わかりました、バグを見つけました。それは厄介でした。起動したアプリケーションはシステムを停止しませんでした。mdb を使用したコアダンプ インスペクションといくつかの gdb ステッピングについて学んだ後、ダンプの原因となっているシステム コールが実装されていないことがわかりました。システムを最新のカーネルに更新すると、問題が解決します。皆さんのお陰で。
私の教訓:
どのプロセスがコアダンプを引き起こしているかを確認してください。それはいつもあなたが始めたものではありません。
xcode - GDBチートシート
gbd の良いチート シートを推奨できる人はいますか? 私はwindbgコマンドの経験があり、lml(ロードされたモジュールのリスト)、~*k(すべてのスレッドスタック)、ba(アクセス時にブレーク)、dt(ダンプタイプ)、dv(ダンプフレーム変数)に相当するgdbを探しています)、sxe (SEH ハンドラーのセットアップ) など。1 対 1 の同等物がないことは理解していますが、最も使用されている/有用なコマンドの要約が必要なだけです。