タグ付けされた質問 「gdb」

このソフトウェアは、GNUソフトウェアシステムの標準デバッガであるGDBに関連または関連する問題に使用します。


4
例外が発生するまでGDBでアプリケーションを実行する
私はマルチスレッドアプリケーションで作業しており、GDBを使用してそれをデバッグしたいと考えています。 問題は、私のスレッドの1つが次のメッセージで消え続けることです。 pure virtual method called terminate called without an active exception Abort 私はそのメッセージの原因を知っていますが、私のスレッドのどこで発生するのかわかりません。バックトレースは本当に役に立ちます。 GDBでアプリを実行すると、スレッドが一時停止または再開されるたびに一時停止します。例外のあるスレッドの1つが停止するまでアプリを通常どおり実行し続けます。その時点ですべてが停止し、バックトレースを取得できます。

2
GCC -g vs -g3 GDBフラグ:違いは何ですか?
CソースコードをgccまたはClangでコンパイルするときは、常に-gフラグを使用してgdbのデバッグ情報を生成します。 gcc -g -o helloworld helloworld.c -g3代わりに推奨する人もいることに気づきました。-gと-g3フラグの違いは何ですか?また、との違いは-gあり-ggdbますか?
102 c  debugging  gcc  gdb  clang 

4
stdinを読み取り、gdbでパラメーターを取得するプログラムをロードする方法
stdinから入力を受け取り、コマンドラインからいくつかのパラメーターを受け取るプログラムがあります。次のようになります。 cat input.txt > myprogram -path "/home/user/work" 私はemacs内でgdbを使用してコードをデバッグしようとします。Mxgdbを使用して、次のコマンドでプログラムをロードしようとします。 gdb cat input.txt > myprogram -path "/home/user/work" ただし、gdbはそれを好みません。 質問はこちらから。残念ながら、私は解決策を理解しておらず、-gオプションでコンパイルしてコマンドMx gdbを実行する以外に何をすべきかわかりません。


2
gdbの特定のアドレスでアセンブリ命令を中断するにはどうすればよいですか?
0x0000000000400448 <main+0>: push %rbp 0x0000000000400449 <main+1>: mov %rsp,%rbp 0x000000000040044c <main+4>: mov $0x6,%eax 0x0000000000400451 <main+9>: leaveq 0x0000000000400452 <main+10>: retq 私は試した: breaki 0x0000000000400448 しかし、そのようなコマンドはないようです。 gdbにはそのような機能がありますか?
96 assembly  gdb 



3
GDBでスタックの内容を確認するにはどうすればよいですか?
私はGDBを初めて使用するので、いくつか質問があります。 スタックの内容を確認するにはどうすればよいですか?例:レジスターの内容を表示するには、と入力しinfo registersます。スタックの場合、それはどうあるべきですか? 内容を確認するにはどうすればよい$0x4(%esp)ですか?と入力するとprint /d $0x4(%esp)、GDBでエラーが発生します。 プラットフォーム:LinuxおよびGDB
94 c  assembly  gdb 

7
gdbを使用した標準コンテナー(std :: map)の内容の検査
次のようなものがあるとします。 #include <map> int main(){ std::map<int,int> m; m[1] = 2; m[2] = 4; return 0; } gdbからプログラムを実行しているマップの内容を検査できるようにしたいと思います。 添え字演算子を使用すると、次のようになります。 (gdb) p m[1] Attempt to take address of value not located in memory. findメソッドを使用しても、より良い結果は得られません。 (gdb) p m.find(1) Cannot evaluate function -- may be inlined これを達成する方法はありますか?
93 c++  stl  map  gdb 

3
コマンドフラグを使用して将来の共有ライブラリにブレークポイントを設定する方法
--commandフラグを使用してgdbセッションを自動化しようとしています。共有ライブラリ(UNIXのDLLに相当)の関数にブレークポイントを設定しようとしています。私のcmds.gdbは次のようになります。 set args /home/shlomi/conf/bugs/kde/font-break.txt b IA__FcFontMatch r ただし、次のようになっています。 shlomi:〜/ progs / bugs-external / kde / font-breaking $ gdb --command = cmds.gdb ... GNU gdb 6.8-2mdv2009.0(Mandriva Linuxリリース2009.0) Copyright(C)2008 Free Software Foundation、Inc. ライセンスGPLv3 +:GNU GPLバージョン3以降 これはフリーソフトウェアです。自由に変更して再配布できます。 法律で許可されている範囲で、保証はありません。「コピーを表示」と入力します 詳細については、「保証を表示」をご覧ください。 このGDBは「i586-mandriva-linux-gnu」として構成されました... (デバッグシンボルが見つかりません) 関数「IA__FcFontMatch」は定義されていません。 将来の共有ライブラリのロード時にブレークポイントを保留にしますか?(yまたは[n])[答えはN; 端末からではなく入力] つまり、結局、ブレークポイントは設定されません。デフォルトで「y」と応答して、保留中の将来の共有ライブラリのロードにブレークポイントを設定するにはどうすればよいですか? 何かできたとは思いますが、何ができたかは思い出せません。
92 c++  c  linux  unix  gdb 

5
GDBで実行可能ファイルを自動的に実行するにはどうすればよいですか?
私がしたいのですがgdb(:私は、「実行」をタイピングを嫌い動機は)私は、「実行」を入力したのだかのように、すぐに実行可能ファイルを実行します。 1つの方法は、次のgdbようにコマンドをパイプ処理することです。 $ echo run | gdb myApp ただし、このアプローチの問題は、との対話性が失われることですgdb。ブレークポイントがトリガーまたはmyAppクラッシュした場合、gdb終了します。この方法については、ここで説明します。 のオプションを見ると、--helpこれを行う方法がわかりませんが、おそらく何か不足しています。
91 gdb 

5
gcc-ggdbとgcc-gの違いは何ですか
gccを使用してCプログラムをコンパイルするとき、私は通常、-gいくつかのデバッグ情報をelfファイルに取得して、必要に応じてgdbが役立つようにします。 ただし、-ggdbデバッグ情報をよりgdbに適したものにすることになっているため、一部のプログラムがを使用していることに気付きました。 それらはどのように異なり、どちらを使用することをお勧めしますか? 注:プログラムまたはGCCをデバッグするためのオプションへのリンク、http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options
91 gcc  gdb 

5
gdb:「シンボルテーブルが読み込まれていません」
gdbにブレークポイントを追加しようとすると、このエラーメッセージが表示され続けます。 これらのコマンドを使用してコンパイルしました: gcc -g main.c utmpib2.c -o main.o and: cc -g main.c utmpib2.c -o main.o and also: g++ -g main.c utmpib2.c -o main.o 「-g」の代わりに「-ggdb」も試しましたが、それでもエラーメッセージが表示されます。 次に、gdbを実行します。 $gdb gdbの場合: (gdb)exec-file main.o (gdb)break 59 No symbol table is loaded. Use the "file" command.
90 c  gdb 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.