GVKun编程网logo

`inspect.trace()`与`traceback`

14

针对`inspect.trace和`与`traceback`这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展.MySQLTransactionRollbackException:Lockwa

针对`inspect.trace`与`traceback`这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction、android – 片段行为:FragmentTransaction :: replace()和反向backStack操作、backtrace() returns only one stack frame、com.facebook.react.devsupport.StackTraceHelper.StackFrame的实例源码等相关知识,希望可以帮助到你。

本文目录一览:

`inspect.trace()`与`traceback`

`inspect.trace()`与`traceback`

我对两个对象之间的区别感到困惑:

  • inspect.trace()处理异常时返回的帧列表
  • sys.exc_info()[2](或在调用中传递sys.excepthook)返回的追溯

两个对象是否包含相同的信息,只是组织成不同的数据结构?如果没有,那么另一个则没有?

答案1

小编典典

从inspect.trace的文档中:

检查。 跟踪 ([上下文])

返回当前帧与其中引发了当前正在处理异常的帧之间的堆栈的帧记录列表。最后一个条目表示引发异常的位置。

这表明它提供了一种很好的方法来将sys.exc_info()[2]您获得的帧进行切片和切块。

如果查看源代码,则:

def trace(context=1):    """Return a list of records for the stack below the current exception."""    return getinnerframes(sys.exc_info()[2], context)

(与3.2或2.7相同),正是它的功能,但是它通过getinnerframes,将其传递给,并根据文档字符串用一些有用的信息对其进行注释:

获取回溯框架和所有较低框架的记录列表。

每个记录包含一个框架对象,文件名,行号,函数名,上下文行列表以及上下文中的索引。

而且,由于我对这实际上意味着什么感到好奇:

import sysimport inspectfrom pprint import pprintdef errorer():    raise Exception(''foo'')def syser():    try:        errorer()    except Exception, e:        tb = sys.exc_info()[2]        print tb.tb_frame        print tb.tb_lasti        print tb.tb_lineno        print tb.tb_nextdef inspecter():    try:        errorer()    except Exception, e:        pprint(inspect.trace())

从提示中调用时,同时回想起其中许多字段和对象具有易于查找的定义:

>>> syser()<frame object at 0x1441240>610<traceback object at 0x13eb3b0>>>> inspecter()[(<frame object at 0x14a5590>,  ''/tmp/errors.py'',  22,  ''inspecter'',  None,  None), (<frame object at 0x14a21b0>,  ''/tmp/errors.py'',  8,  ''errorer'',  None,  None)]

(行号跳来跳去,因为我搞砸了格式)

inspect.trace() 显然好一点。

.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction

.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction


com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_191]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_191]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_191]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_191]
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.Util.getInstance(Util.java:408) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:952) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1966) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3188) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeQuery(FilterEventAdapter.java:465) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3185) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.wall.WallFilter.preparedStatement_executeQuery(WallFilter.java:648) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3185) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeQuery(FilterEventAdapter.java:465) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3185) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.executeQuery(PreparedStatementProxyImpl.java:181) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeQuery(DruidPooledPreparedStatement.java:227) [druid-1.1.14.jar:1.1.14]
    at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.executeSQL(StdRowLockSemaphore.java:96) [quartz-2.3.0.jar:na]
    at org.quartz.impl.jdbcjobstore.DBSemaphore.obtainLock(DBSemaphore.java:113) [quartz-2.3.0.jar:na]
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3842) [quartz-2.3.0.jar:na]
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.triggersFired(JobStoreSupport.java:2962) [quartz-2.3.0.jar:na]
    at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:353) [quartz-2.3.0.jar:na]

2019-05-13 14:39:03.953 ERROR 10652 --- [SchedulerThread] druid.sql.Statement                      : {conn-1010019, pstmt-1020072} execute error. SELECT * FROM QRTZ_LOCKS WHERE SCHED_NAME = ''RASScheduler'' AND LOCK_NAME = ? FOR UPDATE

com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_191]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_191]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_191]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_191]
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.Util.getInstance(Util.java:408) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:952) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1966) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3188) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeQuery(FilterEventAdapter.java:465) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3185) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.wall.WallFilter.preparedStatement_executeQuery(WallFilter.java:648) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3185) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeQuery(FilterEventAdapter.java:465) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3185) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.executeQuery(PreparedStatementProxyImpl.java:181) [druid-1.1.14.jar:1.1.14]
    at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeQuery(DruidPooledPreparedStatement.java:227) [druid-1.1.14.jar:1.1.14]
    at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.executeSQL(StdRowLockSemaphore.java:96) [quartz-2.3.0.jar:na]
    at org.quartz.impl.jdbcjobstore.DBSemaphore.obtainLock(DBSemaphore.java:113) [quartz-2.3.0.jar:na]
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3842) [quartz-2.3.0.jar:na]
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.triggersFired(JobStoreSupport.java:2962) [quartz-2.3.0.jar:na]
    at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:353) [quartz-2.3.0.jar:na]

2019-05-13 14:39:56.001 ERROR 10652 --- [SchedulerThread] druid.sql.Statement                      : {conn-1010019, pstmt-1020073} execute error. SELECT * FROM QRTZ_LOCKS WHERE SCHED_NAME = ''RASScheduler'' AND LOCK_NAME = ? FOR UPDATE

com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_191]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_191]

android – 片段行为:FragmentTransaction :: replace()和反向backStack操作

android – 片段行为:FragmentTransaction :: replace()和反向backStack操作

我将此方法称为从AFrag转到BFrag:

showFragment()
{ 
    FragmentTransaction fragmentTransaction = mFragmentMgr.beginTransaction();

    // Add fragment to the container ContentView 
    fragmentTransaction.replace(R.id.operation_fragments_frame,mBFrag,mBFrag.getTag());

    // Add FADE effect
    fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);   

    // Keep the transaction in the back stack so it will be reversed when backbutton is pressed
    fragmentTransaction.addToBackStack(null);

    // Commit transaction
    fragmentTransaction.commit();
}

它显示一个新片段(BFrag),替换前一个片段(AFrag)并保留有关事务的信息,因此可以在按下后退按钮时自动撤消/撤消.

当按下后退按钮时,一切看起来都很好,显示前一个片段(AFrag).但是当我再次前进时(AFrag – > BFrag)我得到了一个“片段已添加异常”.

反向/撤消操作没有删除新片段(BFrag)吗?这是预期的行为吗?

这很奇怪,因为在此之后,我决定设置一张支票:

 if(mBFrag.isAdded()) 
 {
    fragmentTransaction.show(mBFrag);
 }
 else 
 {
   fragmentTransaction.replace(R.id.operation_fragments_frame,mBFrag.getTag());
 }

而且,它进入了else语句……我得到了异常.

我对你做错了什么了解吗?

谢谢.

最佳答案
您是否尝试使用其他方法,如remove(),然后执行add().或类似的东西?我在其他帖子上看到,replace()方法并不总是正常运行.

backtrace() returns only one stack frame

backtrace() returns only one stack frame

参考:

在 Linux 中如何利用 backtrace 信息解决程序崩溃的问题

linux 打印堆栈方法

https://devtalk.nvidia.com/default/topic/987279/jetson-tx1/backtrace-returns-only-one-stack-frame-on-jetson-tx1/

 

在使用 aarch64-linux-gnu-gcc 编译应用程序学习 backtrace 时,用下面的编译命令,发现只打印出一条 trace 信息:

aarch64-linux-gnu-gcc -rdynamic -O0 -g main.c -o main

 

 

修改,增加编译选项: -funwind-tables

aarch64-linux-gnu-gcc -funwind-tables -rdynamic -O0 -g main.c -o main

 

 关于这个参数的说明,请参考 GCC 手册:

https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc.pdf

 完。

 

com.facebook.react.devsupport.StackTraceHelper.StackFrame的实例源码

com.facebook.react.devsupport.StackTraceHelper.StackFrame的实例源码

项目:ReactNativeSignatureExample    文件:DevSupportManagerImpl.java   
private void showNewError(
    final String message,final StackFrame[] stack,final int errorCookie) {
  UiThreadUtil.runOnUiThread(
      new Runnable() {
        @Override
        public void run() {
          if (mRedBoxDialog == null) {
            mRedBoxDialog = new RedBoxDialog(mApplicationContext,DevSupportManagerImpl.this);
            mRedBoxDialog.getwindow().setType(WindowManager.LayoutParams.TYPE_SYstem_ALERT);
          }
          if (mRedBoxDialog.isShowing()) {
            // Sometimes errors cause multiple errors to be thrown in JS in quick succession. Only
            // show the first and most actionable one.
            return;
          }
          mRedBoxDialog.setExceptionDetails(message,stack);
          mRedBoxDialog.setErrorCookie(errorCookie);
          mRedBoxDialog.show();
        }
      });
}
项目:ReactNativeSignatureExample    文件:RedBoxDialog.java   
@Override
public View getView(int position,View convertView,ViewGroup parent) {
  if (position == 0) {
    TextView title = convertView != null
        ? (TextView) convertView
        : (TextView) LayoutInflater.from(parent.getContext())
            .inflate(R.layout.redBox_item_title,parent,false);
    title.setText(mTitle);
    return title;
  } else {
    if (convertView == null) {
      convertView = LayoutInflater.from(parent.getContext())
          .inflate(R.layout.redBox_item_frame,false);
      convertView.setTag(new FrameViewHolder(convertView));
    }
    StackFrame frame = mStack[position - 1];
    FrameViewHolder holder = (FrameViewHolder) convertView.getTag();
    holder.mMethodView.setText(frame.getmethod());
    holder.mFileView.setText(frame.getFileName() + ":" + frame.getLine());
    return convertView;
  }
}
项目:ReactNativeSignatureExample    文件:RedBoxDialog.java   
@Override
protected Void doInBackground(StackFrame... stackFrames) {
  try {
    String openStackFrameUrl =
        Uri.parse(mDevSupportManager.getSourceUrl()).buildUpon()
            .path("/open-stack-frame")
            .query(null)
            .build()
            .toString();
    OkHttpClient client = new OkHttpClient();
    for (StackFrame frame: stackFrames) {
      String payload = stackFrametoJson(frame).toString();
      RequestBody body = RequestBody.create(JSON,payload);
      Request request = new Request.Builder().url(openStackFrameUrl).post(body).build();
      client.newCall(request).execute();
    }
  } catch (Exception e) {
    FLog.e(ReactConstants.TAG,"Could not open stack frame",e);
  }
  return null;
}
项目:react-native-ibeacon-android    文件:DevSupportManagerImpl.java   
private void showNewError(
    final String message,stack);
          mRedBoxDialog.setErrorCookie(errorCookie);
          mRedBoxDialog.show();
        }
      });
}
项目:react-native-ibeacon-android    文件:RedBoxDialog.java   
@Override
public View getView(int position,false);
      convertView.setTag(new FrameViewHolder(convertView));
    }
    StackFrame frame = mStack[position - 1];
    FrameViewHolder holder = (FrameViewHolder) convertView.getTag();
    holder.mMethodView.setText(frame.getmethod());
    holder.mFileView.setText(frame.getFileName() + ":" + frame.getLine());
    return convertView;
  }
}
项目:react-native-ibeacon-android    文件:RedBoxDialog.java   
@Override
protected Void doInBackground(StackFrame... stackFrames) {
  try {
    String openStackFrameUrl =
        Uri.parse(mDevSupportManager.getSourceUrl()).buildUpon()
            .path("/open-stack-frame")
            .query(null)
            .build()
            .toString();
    OkHttpClient client = new OkHttpClient();
    for (StackFrame frame: stackFrames) {
      String payload = stackFrametoJson(frame).toString();
      RequestBody body = RequestBody.create(JSON,e);
  }
  return null;
}
项目:react-native-Box-loaders    文件:DevSupportManagerImpl.java   
private void showNewError(
    final String message,stack);
          mRedBoxDialog.setErrorCookie(errorCookie);
          mRedBoxDialog.show();
        }
      });
}
项目:react-native-Box-loaders    文件:RedBoxDialog.java   
@Override
public View getView(int position,false);
      convertView.setTag(new FrameViewHolder(convertView));
    }
    StackFrame frame = mStack[position - 1];
    FrameViewHolder holder = (FrameViewHolder) convertView.getTag();
    holder.mMethodView.setText(frame.getmethod());
    final int column = frame.getColumn();
    final String columnString = column < 0 ? "" : ":" + column;
    holder.mFileView.setText(frame.getFileName() + ":" + frame.getLine() + columnString);
    return convertView;
  }
}
项目:react-native-Box-loaders    文件:RedBoxDialog.java   
@Override
protected Void doInBackground(StackFrame... stackFrames) {
  try {
    String openStackFrameUrl =
        Uri.parse(mDevSupportManager.getSourceUrl()).buildUpon()
            .path("/open-stack-frame")
            .query(null)
            .build()
            .toString();
    OkHttpClient client = new OkHttpClient();
    for (StackFrame frame: stackFrames) {
      String payload = stackFrametoJson(frame).toString();
      RequestBody body = RequestBody.create(JSON,e);
  }
  return null;
}
项目:Ironman    文件:DevSupportManagerImpl.java   
@Override
public void handleException(Exception e) {
  if (mIsDevSupportEnabled) {
    if (e instanceof JSException) {
      FLog.e(ReactConstants.TAG,"Exception in native call from JS",e);
      // Todo #11638796: convert the stack into something useful
      showNewError(
          e.getMessage() + "\n\n" + ((JSException) e).getStack(),new StackFrame[] {},JSEXCEPTION_ERROR_COOKIE,ErrorType.JS);
    } else {
      showNewJavaError(e.getMessage(),e);
    }
  } else {
    mDefaultNativeModuleCallExceptionHandler.handleException(e);
  }
}
项目:Ironman    文件:RedBoxDialog.java   
@Override
public void onClick(View view) {
  if (mRedBoxHandler == null || !mRedBoxHandler.isReportEnabled() || isReporting) {
    return;
  }
  isReporting = true;
  Assertions.assertNotNull(mReportTextView).setText("Reporting...");
  Assertions.assertNotNull(mReportTextView).setVisibility(View.VISIBLE);
  Assertions.assertNotNull(mloadingIndicator).setVisibility(View.VISIBLE);
  Assertions.assertNotNull(mLineseparator).setVisibility(View.VISIBLE);
  Assertions.assertNotNull(mReportButton).setEnabled(false);

  String title = Assertions.assertNotNull(mDevSupportManager.getLastErrorTitle());
  StackFrame[] stack = Assertions.assertNotNull(mDevSupportManager.getLastErrorStack());
  String sourceUrl = mDevSupportManager.getSourceUrl();

  mRedBoxHandler.reportRedBox(
    title,stack,sourceUrl,Assertions.assertNotNull(mReportCompletedListener));
}
项目:Ironman    文件:RedBoxDialog.java   
@Override
public View getView(int position,false);
      convertView.setTag(new FrameViewHolder(convertView));
    }
    StackFrame frame = mStack[position - 1];
    FrameViewHolder holder = (FrameViewHolder) convertView.getTag();
    holder.mMethodView.setText(frame.getmethod());
    holder.mFileView.setText(StackTraceHelper.formatFrameSource(frame));
    return convertView;
  }
}
项目:Ironman    文件:RedBoxDialog.java   
@Override
protected Void doInBackground(StackFrame... stackFrames) {
  try {
    String openStackFrameUrl =
        Uri.parse(mDevSupportManager.getSourceUrl()).buildUpon()
            .path("/open-stack-frame")
            .query(null)
            .build()
            .toString();
    OkHttpClient client = new OkHttpClient();
    for (StackFrame frame: stackFrames) {
      String payload = stackFrametoJson(frame).toString();
      RequestBody body = RequestBody.create(JSON,e);
  }
  return null;
}
项目:ReactNativeSignatureExample    文件:RedBoxDialog.java   
private static JSONObject stackFrametoJson(StackFrame frame) {
  return new JSONObject(
      MapBuilder.of(
          "file",frame.getFile(),"methodName",frame.getmethod(),"lineNumber",frame.getLine(),"column",frame.getColumn()
      ));
}
项目:react-native-ibeacon-android    文件:RedBoxDialog.java   
private static JSONObject stackFrametoJson(StackFrame frame) {
  return new JSONObject(
      MapBuilder.of(
          "file",frame.getColumn()
      ));
}
项目:react-native-Box-loaders    文件:RedBoxDialog.java   
private static JSONObject stackFrametoJson(StackFrame frame) {
  return new JSONObject(
      MapBuilder.of(
          "file",frame.getColumn()
      ));
}
项目:Ironman    文件:DevSupportManagerImpl.java   
@Override
public void updateJSError(
    final String message,final ReadableArray details,final int errorCookie) {
  UiThreadUtil.runOnUiThread(
      new Runnable() {
        @Override
        public void run() {
          // Since we only show the first JS error in a succession of JS errors,make sure we only
          // update the error message for that error message. This assumes that updateJSError
          // belongs to the most recent showNewJSError
          if (mRedBoxDialog == null ||
              !mRedBoxDialog.isShowing() ||
              errorCookie != mLastErrorCookie) {
            return;
          }
          StackFrame[] stack = StackTraceHelper.convertJsstackTrace(details);
          mRedBoxDialog.setExceptionDetails(message,stack);
          updateLastErrorInfo(message,errorCookie,ErrorType.JS);
          // JS errors are reported here after source mapping.
          if (mRedBoxHandler != null) {
            mRedBoxHandler.handleRedBox(message,RedBoxHandler.ErrorType.JS);
            mRedBoxDialog.resetReporting(true);
          }
          mRedBoxDialog.show();
        }
      });
}
项目:Ironman    文件:DevSupportManagerImpl.java   
private void showNewError(
    final String message,final int errorCookie,final ErrorType errorType) {
  UiThreadUtil.runOnUiThread(
      new Runnable() {
        @Override
        public void run() {
          if (mRedBoxDialog == null) {
            mRedBoxDialog = new RedBoxDialog(mApplicationContext,DevSupportManagerImpl.this,mRedBoxHandler);
            mRedBoxDialog.getwindow().setType(WindowManager.LayoutParams.TYPE_SYstem_ALERT);
          }
          if (mRedBoxDialog.isShowing()) {
            // Sometimes errors cause multiple errors to be thrown in JS in quick succession. Only
            // show the first and most actionable one.
            return;
          }
          mRedBoxDialog.setExceptionDetails(message,errorType);
          // Only report native errors here. JS errors are reported
          // inside {@link #updateJSError} after source mapping.
          if (mRedBoxHandler != null && errorType == ErrorType.NATIVE) {
            mRedBoxHandler.handleRedBox(message,RedBoxHandler.ErrorType.NATIVE);
            mRedBoxDialog.resetReporting(true);
          } else {
            mRedBoxDialog.resetReporting(false);
          }
          mRedBoxDialog.show();
        }
      });
}
项目:Ironman    文件:DevSupportManagerImpl.java   
private void updateLastErrorInfo(
    final String message,final ErrorType errorType) {
  mLastErrorTitle = message;
  mLastErrorStack = stack;
  mLastErrorCookie = errorCookie;
  mLastErrorType = errorType;
}
项目:Ironman    文件:RedBoxDialog.java   
private static JSONObject stackFrametoJson(StackFrame frame) {
  return new JSONObject(
      MapBuilder.of(
          "file",frame.getColumn()
      ));
}
项目:ReactNativeSignatureExample    文件:RedBoxDialog.java   
public StackAdapter(String title,StackFrame[] stack) {
  mTitle = title;
  mStack = stack;
}
项目:ReactNativeSignatureExample    文件:RedBoxDialog.java   
public void setExceptionDetails(String title,StackFrame[] stack) {
  mStackView.setAdapter(new StackAdapter(title,stack));
}
项目:ReactNativeSignatureExample    文件:RedBoxDialog.java   
@Override
public void onItemClick(AdapterView<?> parent,View view,int position,long id) {
  new OpenStackFraMetask(mDevSupportManager).executeOnExecutor(
      AsyncTask.THREAD_POOL_EXECUTOR,(StackFrame) mStackView.getAdapter().getItem(position));
}
项目:react-native-ibeacon-android    文件:RedBoxDialog.java   
public StackAdapter(String title,StackFrame[] stack) {
  mTitle = title;
  mStack = stack;
}
项目:react-native-ibeacon-android    文件:RedBoxDialog.java   
public void setExceptionDetails(String title,stack));
}
项目:react-native-ibeacon-android    文件:RedBoxDialog.java   
@Override
public void onItemClick(AdapterView<?> parent,(StackFrame) mStackView.getAdapter().getItem(position));
}
项目:react-native-Box-loaders    文件:RedBoxDialog.java   
public StackAdapter(String title,StackFrame[] stack) {
  mTitle = title;
  mStack = stack;
}
项目:react-native-Box-loaders    文件:RedBoxDialog.java   
public void setExceptionDetails(String title,stack));
}
项目:react-native-Box-loaders    文件:RedBoxDialog.java   
@Override
public void onItemClick(AdapterView<?> parent,(StackFrame) mStackView.getAdapter().getItem(position));
}
项目:Ironman    文件:DevSupportManagerImpl.java   
@Override
public @Nullable StackFrame[] getLastErrorStack() {
  return mLastErrorStack;
}
项目:Ironman    文件:RedBoxHandler.java   
/**
 * Report the information from the redBox and set up a callback listener.
 */
void reportRedBox(
  String title,StackFrame[] stack,String sourceUrl,ReportCompletedListener reportCompletedListener);
项目:Ironman    文件:RedBoxDialog.java   
public StackAdapter(String title,StackFrame[] stack) {
  mTitle = title;
  mStack = stack;
}
项目:Ironman    文件:RedBoxDialog.java   
public void setExceptionDetails(String title,stack));
}
项目:Ironman    文件:RedBoxDialog.java   
@Override
public void onItemClick(AdapterView<?> parent,(StackFrame) mStackView.getAdapter().getItem(position));
}
项目:Ironman    文件:disabledDevSupportManager.java   
@Override
public @Nullable StackFrame[] getLastErrorStack() {
  return null;
}
项目:Ironman    文件:RedBoxHandler.java   
/**
 * Handle the information from the redBox.
 */
void handleRedBox(String title,ErrorType errorType);
项目:Ironman    文件:DevSupportManager.java   
@Nullable StackFrame[] getLastErrorStack();

关于`inspect.trace`与`traceback`的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction、android – 片段行为:FragmentTransaction :: replace()和反向backStack操作、backtrace() returns only one stack frame、com.facebook.react.devsupport.StackTraceHelper.StackFrame的实例源码的相关信息,请在本站寻找。

本文标签: