[英]Can I get a “stack trace” that traces all async calls, with Dart?
考慮這樣的代碼:
import 'dart:async';
foo() {
new Timer(onesec, bar);
}
bar() {
throw "from bar";
}
const onesec = const Duration(seconds:1);
main() {
runZoned(() {
new Timer(onesec, foo);
},
onError: (e, stackTrace) => print(stackTrace));
}
如何我可以告訴大家, bar
被“叫”,由foo
的stackTrace
,我打印出來?
我希望看到類似的東西:
bar
...
foo
...
main
看看stack_trace包 。 它使用區域來跟蹤異步回調。 捕獲每個異步回調的堆棧跟蹤都很昂貴,但是對於調試來說它絕對值得。
包的示例輸出:
http://dartlang.org/foo/bar.dart 10:11 Foo.<fn>.bar
http://dartlang.org/foo/baz.dart Foo.<fn>.bar
===== asynchronous gap ===========================
http://dartlang.org/foo/bang.dart 10:11 Foo.<fn>.bar
http://dartlang.org/foo/quux.dart Foo.<fn>.bar
根據文檔 ,獲取這些痕跡的最簡單方法是使用Chain.capture
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.