スタックトレースを出力するには?

解決


kai  2006-03-02 03:49:22  No: 60847

C++でException継承した例外クラスをcatchした際にその例外が発生した箇所(source codeの行数)を出力させたいのですが可能でしょうか?
javaのhrowable.printStackTraceみたいなも関数ってないのでしょうか
ご教示よろしくお願いします。


時間なくてごめn  2006-03-02 05:05:11  No: 60848

・Windows のデバッガ用の API 等を使えば、できなくはない。
  (UNIX はまた別の手段でできなくはない)
・Java のような簡単な関数はない。


kure  2006-03-02 05:52:32  No: 60849

スタックトレースはStackWalkあたりを使わないとできません。

単純に例外発生箇所の行番号が知りたいのであれば、
例外クラスに行番号情報を含めてはいかがでしょうか?

私は自前で例外クラスを作って、
マクロを使って行番号なんかを展開してます。

class MyException
{
protected:
  int     _Line;
  _TCHAR* _File;
public:
  MyException( int Line, _TCHAR* File) : _Line(Line), _File(File) {}
  virtual ~MyException() {}

  int Line() const {
    return _Line;
  }
  const _TCHAR* File() const {
    return _File;
  }
};

#define THROW_MY_EXCEPTION() throw MyException(__LINE__, _T(__FILE__))

といった感じです。


kai  2006-03-02 18:17:42  No: 60850

例外クラスに発生箇所の行番号情報を含めてみます。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加