在发布中调试 React Native 崩溃

YSK

我正在使用react-native-tcpAndroid 并且遇到了无法调试的崩溃。不幸的是,这只发生在发布中。

我得到的堆栈跟踪如下:

E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules
               Process: com.xx.xx, PID: 22986
               com.facebook.react.common.JavascriptException: unable to find socket, stack:
               d@664:708
               _onError@664:4582
               <unknown>@664:3790
               value@77:1364
               value@53:2778
               <unknown>@53:1013
               <unknown>@53:106
               value@53:985

                   at com.facebook.react.modules.core.ExceptionsManagerModule.showOrThrowError(ExceptionsManagerModule.java:99)
                   at com.facebook.react.modules.core.ExceptionsManagerModule.reportFatalException(ExceptionsManagerModule.java:83)
                   at java.lang.reflect.Method.invoke(Native Method)
                   at java.lang.reflect.Method.invoke(Method.java:372)
                   at com.facebook.react.bridge.BaseJavaModule$JavaMethod.invoke(BaseJavaModule.java:345)
                   at com.facebook.react.cxxbridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:136)
                   at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
                   at android.os.Handler.handleCallback(Handler.java:739)
                   at android.os.Handler.dispatchMessage(Handler.java:95)
                   at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
                   at android.os.Looper.loop(Looper.java:145)
                   at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:196)
                   at java.lang.Thread.run(Thread.java:818)

现在,Javascript 堆栈跟踪非常神秘(大概是由于缩小和捆绑),但它有助于包含_onError,其react-native-tcp实现如下:

TcpSocket.prototype._onError = function(error: string): void {
  this._debug('received', 'error');

  this.emit('error', normalizeError(error));
  this.destroy();
};

normalizeError上面调用映射到d堆栈跟踪中函数。我知道这一点是因为我检查了构建过程中生成的捆绑文件。

我明白为什么我的代码流会导致一个unable to find socket事件,但我不明白这个事件最终如何导致应用程序崩溃。如果有帮助,此事件会在本机 (Android) 组件中生成react-native-tcp并传播到 JS 端。

我希望将此类事件报告给侦听器(如果有),而不是使应用程序崩溃。

通过 React Native 报告的事件是否有可能在某些情况下导致崩溃 - 例如,如果没有侦听器,或者事件是一个Error对象,或者其他什么?

鉴于它仅在发布时发生,我将如何调试它?

YSK

我无法找到一种有效的调试技术,但能够通过良好的打印来调试我遇到的问题。

问题是 NodeJS(显然也是 React Native)有一个我发现很奇怪的行为:当一个error事件被发出并且没有error侦听器时,会抛出一个未处理的异常。这记录在NodeJS 文档中

When an error occurs within an EventEmitter instance, the typical action is 
for an 'error' event to be emitted. These are treated as special cases 
within Node.js.

If an EventEmitter does not have at least one listener registered for the 
'error' event, and an 'error' event is emitted, the error is thrown, a stack 
trace is printed, and the Node.js process exits.

const myEmitter = new MyEmitter();
myEmitter.emit('error', new Error('whoops!'));
// Throws and crashes Node.js

我的问题是我正在删除error代码中侦听器,因为有一个react-native-tcp问题导致error回调在connect失败时被调用两次,因为没有人在侦听端口。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果签名并发布,React Native App会崩溃。在调试模式下工作正常

来自分类Dev

Android应用在发布版本时崩溃,但可以在调试版本中使用-React-Native

来自分类Dev

React Native App 突然崩溃

来自分类Dev

clean react native项目在真正的android设备调试模式下立即崩溃

来自分类Dev

React Native-适用于Debug的Android应用,在发布时崩溃

来自分类Dev

如何获取React Native应用的崩溃日志?

来自分类Dev

React Native-Navigator递归子代崩溃

来自分类Dev

在 app:processDebugManifest 期间 React Native 崩溃

来自分类Dev

Fetch / Axios在React Native中严重崩溃(但仅适用于某些URL)

来自分类Dev

React Native / Swift-应用内购买代码在沙箱和testflight中随机崩溃

来自分类Dev

当我在项目应用程序中安装并链接 react-native-admob 在加载时崩溃

来自分类Dev

react native:使用 headerRight 导航时,react-navigation 崩溃

来自分类Dev

React Native iOS 独立在 react.ShadowQueue 上崩溃

来自分类Dev

React-Native ios App崩溃而没有报告

来自分类Dev

React Native结束游戏屏幕不显示并崩溃

来自分类Dev

React Native App打开后保持关闭而不会崩溃

来自分类Dev

使用React-Native-Contacts时应用崩溃

来自分类Dev

React Native Expo App在生产模式下崩溃

来自分类Dev

React Native没有互联网获取崩溃

来自分类Dev

基于 React-Native 的 APK 在我的手机上崩溃

来自分类Dev

Android 上的 React-native facebook 登录崩溃

来自分类Dev

应用在发布版本中崩溃,但在调试中不崩溃

来自分类Dev

发布后崩溃报告和调试的策略

来自分类Dev

离线发布(React-Native)

来自分类Dev

如何在React Native iOS中调试链接错误?

来自分类Dev

如何在Ubuntu 14.10中调试react-native?

来自分类Dev

如何在Ubuntu 14.10中调试react-native?

来自分类Dev

在react-native中调试本机Java代码

来自分类Dev

React Native Android App崩溃,显示为“ E / AndroidRuntime:致命例外:mqt_native_modules”

Related 相关文章

  1. 1

    如果签名并发布,React Native App会崩溃。在调试模式下工作正常

  2. 2

    Android应用在发布版本时崩溃,但可以在调试版本中使用-React-Native

  3. 3

    React Native App 突然崩溃

  4. 4

    clean react native项目在真正的android设备调试模式下立即崩溃

  5. 5

    React Native-适用于Debug的Android应用,在发布时崩溃

  6. 6

    如何获取React Native应用的崩溃日志?

  7. 7

    React Native-Navigator递归子代崩溃

  8. 8

    在 app:processDebugManifest 期间 React Native 崩溃

  9. 9

    Fetch / Axios在React Native中严重崩溃(但仅适用于某些URL)

  10. 10

    React Native / Swift-应用内购买代码在沙箱和testflight中随机崩溃

  11. 11

    当我在项目应用程序中安装并链接 react-native-admob 在加载时崩溃

  12. 12

    react native:使用 headerRight 导航时,react-navigation 崩溃

  13. 13

    React Native iOS 独立在 react.ShadowQueue 上崩溃

  14. 14

    React-Native ios App崩溃而没有报告

  15. 15

    React Native结束游戏屏幕不显示并崩溃

  16. 16

    React Native App打开后保持关闭而不会崩溃

  17. 17

    使用React-Native-Contacts时应用崩溃

  18. 18

    React Native Expo App在生产模式下崩溃

  19. 19

    React Native没有互联网获取崩溃

  20. 20

    基于 React-Native 的 APK 在我的手机上崩溃

  21. 21

    Android 上的 React-native facebook 登录崩溃

  22. 22

    应用在发布版本中崩溃,但在调试中不崩溃

  23. 23

    发布后崩溃报告和调试的策略

  24. 24

    离线发布(React-Native)

  25. 25

    如何在React Native iOS中调试链接错误?

  26. 26

    如何在Ubuntu 14.10中调试react-native?

  27. 27

    如何在Ubuntu 14.10中调试react-native?

  28. 28

    在react-native中调试本机Java代码

  29. 29

    React Native Android App崩溃,显示为“ E / AndroidRuntime:致命例外:mqt_native_modules”

热门标签

归档