簡體   English   中英

我可以通過Dart獲得跟蹤所有異步調用的“堆棧跟蹤”嗎?

[英]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被“叫”,由foostackTrace ,我打印出來?

我希望看到類似的東西:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM