0

注: 例外がスローされたときにブレークする方法を知っています。

ただし、関数内にブレークポイントを設定して、この関数が (通常のリターンではなく) 例外を介して終了したときにデバッガーが停止するようにしたい場合があります。

これは、逆アセンブリにブレークポイントを設定することで可能でしょうか? はいの場合、正しい指示を見つける方法 - いいえの場合、他に何がありますか?

私のコードは x86 ですが、x64 もカバーする一般的な回答に興味があります。

現在の両方の回答は、この質問の対象ではないコードを追加することで問題に対処していることに注意してください。コードを追加または変更せずに例外を介して終了する場合、関数の終了 (巻き戻し) で中断したいと思います。

4

2 に答える 2

1

純粋な C++ では、常にtry/catch関数本体全体に a を追加し、すぐに例外を再スローすることができます。もちろん、throwステートメントにブレークポイントを設定します。

void foo() {
    try {
        // old function body
    }
    catch (...) {
        throw; // put a breakpoint here
    }
}
于 2013-10-23T21:23:54.310 に答える
0

どうですか:

class ExceptionDetector
{
     public:
          ExceptionDetector() {}
         ~ExceptionDetector()
          {
              if (std::uncaught_exception())
              {
                     std::cout << "Exception in Flight\n";  // Put break point here.
              }
          }
};

関数(またはメソッド)で。

int myFunc()
{
     ExceptionDetector   exceptionDetector;

     // STUFF
}

上記のデストラクタにブレークポイントを入れると。
例外がスローされたときに関数を終了しようとしているときに、プログラムを一時停止します。

于 2013-10-24T17:13:39.780 に答える