私は実行時にモバイルデバイス上でスタックトレースを確実に印刷するように努力してきました。私はこれがしたいので、スタックトレースに特定のメソッドが表示されないようにする
public class Test : MonoBehaviour {
public static void Do() {
Test3.ActionThing(() => {
Test2.DoSomethingElse();
});
}
}
public class Test2 : MonoBehaviour {
void Start() {
Test3.ActionThing(() => {
Debug.Log("Start execution");
Test.Do();
});
}
public static void DoSomethingElse(){
Test3.ActionThing(() => {
var a = 0;
a = int.Parse("s1");
});
}
}
public class Test3 : MonoBehaviour {
public static void ActionThing(Action act){
try{
if (act != null)
act();
}catch(Exception e){
Debug.LogError("Error occured " + e.Message);
Debug.LogError("StackTrace was " + Environment.StackTrace);
}
}
}
は、私は、エラーが明らかに
StackTrace was at System.Environment.get_StackTrace() in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Environment.cs:line 227
at Test3.ActionThing(System.Action act) in <ProjectPath>\Test3.cs:line 13
at Test2.DoSomethingElse() in <ProjectPath>\Test2.cs:line 14
at Test.<Do>m__0() in <ProjectPath>\Test.cs:line 8
at Test3.ActionThing(System.Action act) in <ProjectPath>\Test3.cs:line 10
at Test.Do() in <ProjectPath>\Test.cs:line 7
at Test2.<Start>m__0() in <ProjectPath>\Test2.cs:line 9
at Test3.ActionThing(System.Action act) in <ProjectPath>\Test3.cs:line 10
at Test2.Start() in <ProjectPath>\Test2.cs:line 7
UnityEngine.Debug:LogError(Object)
Test3:ActionThing(Action) (at Assets/Test3.cs:13)
Test2:DoSomethingElse() (at Assets/Test2.cs:14)
Test:<Do>m__0() (at Assets/Test.cs:8)
Test3:ActionThing(Action) (at Assets/Test3.cs:10)
Test:Do() (at Assets/Test.cs:7)
Test2:<Start>m__0() (at Assets/Test2.cs:9)
Test3:ActionThing(Action) (at Assets/Test3.cs:10)
Test2:Start() (at Assets/Test2.cs:7)
をスローされ、このスタックトレースを取得する:私は今、3つのクラスで何かをしようとしていますSystem.Environment.StackTrace
に出くわしましたリリースビルドのデバッグでは、内部スタックトレースとメッセージのみを表示しません。
しかし、問題はstacktrace自体にあり、そこでメソッドat Test3.ActionThing(System.Action act) in <ProjectPath>\Test3.cs:line 10
を出力します。私はこれをスタックトレースに現れないようにしたい。
すべてのヘルプは、事前に感謝を感謝しています。質問が長すぎると思われる場合は、編集を提案してください:)
へのアクセスを得る
using System.Linq
を追加するために覚えていますか? 'Environment.StackTrace'を処理して不要な行を削除するのは簡単なことですが、いくつかの行を受け入れられるものとできないものは明確ではありません。 –そのメソッドの一般的な考え方は、エラー、私は1つの場所でそれらを見る/印刷することができました。しかし、呼び出されるメソッドの連鎖が長すぎて、すべてのメソッドがこのメソッドを介してルーティングされている場合、この文字列はかなり長くなり、不要なスタックエントリとともにエラーを簡単に理解しにくくなります – Shraa1
私はあなたが'System.Environment.get_StackTrace() 'が必要ですか? –