Android平台Dart/Flutter发布模式堆栈追踪错误原因排查
发布模式下Trace.current()返回错误堆栈追踪的问题
调试模式下调用Trace.current()可正常工作,但发布模式下调用该方法得到的堆栈追踪结果存在明显错误(对应代码路径不可能存在)。多数甚至全部发布模式下的堆栈追踪都存在这类问题,其中会有一到两个函数调用信息错误。
调试模式堆栈追踪(正确显示GlobalChannelProxyService.createChannel调用)
package:poly_scrabble_mobile/room_service/room_service.dart 52:36 RoomService._getCurrentFunctionName package:poly_scrabble_mobile/room_service/room_service.dart 134:25 RoomService.callServer package:poly_scrabble_mobile/services/global_channel_proxy_service.dart 17:33 GlobalChannelProxyService.createChannel package:poly_scrabble_mobile/main_page/chat/create_channel_dialog.dart 14:10 CreateChannelDialog.submit package:poly_scrabble_mobile/main_page/chat/create_channel_dialog.dart 44:17 CreateChannelDialog.build.<fn> ...
发布模式堆栈追踪(错误显示未被调用的GameServiceProxy.executePlace)
package:poly_scrabble_mobile/room_service/room_service.dart 52 RoomService._getCurrentFunctionName package:poly_scrabble_mobile/room_service/room_service.dart 134 RoomService.callServer package:poly_scrabble_mobile/services/game_proxy_service.dart 84 GameServiceProxy.executePlace package:poly_scrabble_mobile/main_page/chat/create_channel_dialog.dart 16 CreateChannelDialog.submit.<fn>
注意:GameServiceProxy.executePlace在应用中从未被调用过,但它是一个异步函数,这可能与问题相关。
注释GameServiceProxy.executePlace后的发布模式堆栈追踪(仍存在错误路径)
package:poly_scrabble_mobile/room_service/room_service.dart 52 RoomService._getCurrentFunctionName package:poly_scrabble_mobile/room_service/room_service.dart 111 RoomService.reflectProp package:poly_scrabble_mobile/services/self_user_proxy_service.dart 12 SelfUserProxyService.user package:poly_scrabble_mobile/room_service/room_service.dart 165 RoomService._callServerBase package:poly_scrabble_mobile/room_service/room_service.dart 148 RoomService.callServer package:poly_scrabble_mobile/services/global_channel_proxy_service.dart 17 GlobalChannelProxyService.createChannel package:poly_scrabble_mobile/main_page/chat/create_channel_dialog.dart 14 CreateChannelDialog.submit package:poly_scrabble_mobile/main_page/chat/create_channel_dialog.dart 33 CreateChannelDialog.build.<fn> ...
注意:其中的SelfUserProxyService.user同样属于不可能的调用路径,看起来像是两个堆栈追踪被混淆了。
内容的提问来源于stack exchange,提问作者fordcars
相关产品推荐
相关产品推荐

