2

特定のフレームワーク (GNU ランタイムのみ)を使用せずに、GCC 4.3 を使用して Linux で Objective-C アプリをビルドしています。Objective-C 例外を使用しています (「-fobjc-exceptions」コンパイラ フラグを介して)。

今、私はいくつかの例外をキャッチしたときに、そのような例外のスタック トレースを出力したいと考えています。または、さらに嬉しいことは、トレースを文字列または何らかの構造に配置して、後で評価または出力することです。

それはどのように達成できますか?

4

2 に答える 2

0

これ以上知識が浮かんでいないので、私が自分で見つけたものは次のとおりです。

少なくとも Linux では、GNU 拡張機能を使用してbacktracebacktrace_symbolsコール スタックのアドレスと対応するシンボルを取得できます。これは少しは役に立ちますが、gdb が提供する情報とはかけ離れています。行番号も引数値もありません。

glibc 拡張機能dladdrを使用すると、同様の情報を取得できますが、それ以上は取得できません。

これはまだ私が探しているものではありませんが、誰もそのような条項を持っていません – だから私は自分の答えを受け入れます:(。

于 2010-09-15T09:33:20.773 に答える
0
  NSArray * stack = [NSThread callStackSymbols];

それは役立つかもしれません。

于 2010-09-15T05:49:33.973 に答える