0

実行可能ファイルをそのまま提供しています。作成者は、最小限の依存関係とシンボルなしでコンパイルしました。それを gdb にロードすると、次のように表示されます。

...(no debugging symbols found)...done.

実行が共有実行可能ファイルを離れる場合に備えて、オプションの終了ポイントを使用して、アセンブラー コードで段階的なデバッグを行いたいと考えています。これが必要な理由は、セグメンテーション違反を起こす実行可能ファイルがあり、問題に取り組む他の手段がないためです。

最小限の例 (simple.c++) を作成しました。

#include <stdlib.h>
#include <iostream>

int main () {
  std::cout << "Hello World!" << std::endl;

  return EXIT_SUCCESS;
}

そしてそれをコンパイルします:

g++ -static -O3 simple.c++ -o simple
strip simple

前もって感謝します。

4

1 に答える 1

0

アセンブラ コードで段階的なデバッグを行いたい

あなたがそれをするのを妨げているのは何ですか?

readelf -h a.outがどのアドレスにあるかを教えてくれますstartstepiそこにブレークポイントを設定し、またはに進みますnexti

これには実際には非常に長い時間がかかるため、より効率的なアプローチは、クラッシュ ポイントから進むのではなく、クラッシュ ポイントから戻ることstartです。つまり、クラッシュ ポイントまでバイナリを実行し、そこに到達した方法を把握し、以前にブレークポイントを設定して再実行します。リバース デバッグも役立つ場合があります。

于 2015-05-17T18:51:49.493 に答える