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

2
GDBでステップイン、ステップオーバー、ステップアウトする方法は?
helpGDBにいる間に入力しましたが、ステップイン、ステップオーバー、ステップアウトについて何も見つかりませんでした。_start(break _start)のアセンブリプログラムにブレークポイントを配置しました。その後、入力nextしてデバッグを終了しました。思ったとおりに終了し_start、ステップインしなかったからだと思います。 助けてくれる人はいますか?


3
最適化せずにコンパイルする方法-CMakeを使用して-O0
私が使用しています科学のLinux(SL)を。多数のC ++(.cpp)ファイルを使用するプロジェクトをコンパイルしようとしています。 ディレクトリにuser/project/Build、makeすべての.cppファイルをコンパイルしてリンクするために入力します。次に、入力して入力する必要がuser/run/あります./run.sh values.txt GDBでデバッグするには、に移動しuser/runて入力gdb ../project/Build/bin/Projectし、実行する必要がありますrun -Project INPUT/inputfile.txt。ただし、を使用して変数の値を出力しようとしていますp variablename。 ただし、メッセージが表示されますs1 = <value optimized out>。私はオンラインでいくつかの研究を行ってきましたが、-O0これを解決するには最適化せずにコンパイルする必要があるようです。しかし、どこに入力しますか?でCMakeLists?もしそうなら、どのCMakeLists?1つproject/Buildまたはproject/src/project?


2
gdbはsuid rootプログラムをデバッグできますか?
とを呼び出すプログラムを作成setuid(0)しましたexecve("/bin/bash",NULL,NULL)。 それから私はやった chown root:root a.out && chmod +s a.out 実行する./a.outと、ルートシェルが取得されます。ただし、実行gdb a.outするとプロセスが通常のユーザーとして開始され、ユーザーシェルが起動します。 だから... setuid rootプログラムをデバッグできますか?
16 debugging  setuid  gdb 

1
gdbに「yまたはn」を聞かないようにする方法
GDBコマンドを使用しadd-symbol-fileてシンボルを読み込むと、GDBは常に次のように「yまたはn」を要求します。 gdb> add-symbol-file mydrv.ko 0xa0070000 add symbol table from file "mydrv.ko" at .text_addr = 0xa0070000 (y or n) 静かに尋ねて実行しないようにする方法は?
14 debugging  gdb 

2
プロセスを強制終了せずにプロセスコアをダンプする
プロセスを実際に強制終了せずに、プロセスのコアダンプ(または同様のもの)を取得する方法はありますか?組み込みシステムでマルチスレッドpythonプロセスを実行しています。そして、私は通常の状態(つまり、実行に必要な他のプロセス)でプロセスのスナップショットを取得できるようにしたいのですが、Pythonプロセスなしでgdbに接続する(またはgdbで実行する)十分なメモリがありません実行している唯一のものです。 この質問が理にかなっていることを願っています。

3
なぜGDBは実行可能ファイルとコアダンプを必要とするのですか?
私はコアダンプを使用してデバッグしています。gdbでは、コアダンプだけでなく実行可能ファイルも指定する必要があることに注意してください。どうしてこれなの?コアダンプにプロセスが使用するすべてのメモリが含まれている場合、実行可能ファイルはコアダンプに含まれていませんか?おそらく、exe全体がメモリに読み込まれる保証はありません(個々の実行可能ファイルは通常それほど大きくありません)。あるいは、コアダンプに関連するすべてのメモリが含まれていないのでしょうか。シンボル用ですか(おそらく、通常はメモリに読み込まれていません)?
11 core-dump  gdb 

2
Unixの歴史:8進数の戻りコード?
今日、私は油断したgdb: Program exited with code 0146. gdb戻りコードを8進数で出力します。私が見つけた理由を調べます:http : //comments.gmane.org/gmane.comp.gdb.devel/30363 しかし、それは特に満足のいく答えではありません。一部のグーグル検索では履歴が明らかにされなかったため、SOの誰かが裏話を知っていることを望んでいました。 やや関連する質問ですが、リターンコードを8進数で表示するにはどうすればよいでしょうか。おそらく古いマシンは常に戻りコードを出力しましたか? $ printf %o\\n $? かなり厄介です:)
10 gdb  history 

2
プロセスが実行している命令を判別する方法は?
私はstraceとltraceについて知っていますが、それはそれぞれ、プロセスが実行しているシステムコールとライブラリコールを教えてくれるだけです。プロセスが実行している命令を正確に知りたいのですが。アセンブリ、または可能であればCとアセンブリの間の何らかの中間点。バイナリがデバッグシンボルでコンパイルされていないと仮定すると、可能性が高いので、最初のオプションに傾倒します。 使用例:プロセスがハングしているように見え、straceまたはltraceからの出力がありません。プロセスが「何か」を実行しているかどうかを確認します。これは停止の問題を解決することに似ていると思うので、これを判断するのは難しいかもしれないと思います。ただし、有用なデータを収集できる可能性があります。 2番目の使用例:好奇心。アセンブリ命令のリスト全体をテキストリストにダンプすると興味深いでしょう。 私の推測では、gdbを使用してこれを行うことができますが、これは私が作成したプログラムのデバッグについてではなく、gdbを使用して実行中のプロセスの状態をチェックするためです。 OSはCentOS 6です。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.