`
lijuanabc
  • 浏览: 127687 次
社区版块
存档分类
最新评论

异常日志没有堆栈信息

阅读更多

昨天财务出现一个问题,线上一直在报错:日志截屏如下:

有异常,但是就只有一个java.lang.NullPointerException异常,这个没有堆栈信息,我怎么查问题呢?后来经过查询,这个问题其实是跟JDK5引入的一个新特性有关,对于一些频繁抛出的异常,JDK为了性能会做一个优化,在JIT重新编译后会抛出没有堆栈的异常。在使用server模式的时候,这个优化是开启的,我们的服务器跑在server模式下并且jdk版本是6,因此在频繁抛出java.lang.NullPointerException异常一段时间后优化开始起作用,只抛出没有堆栈的异常信息了。参考文档:http://java.sun.com/j2se/1.5.0/relnotes.html#hotspot

为了验证,我还简单写了一段代码验证下:
Java代码 
  1. public class TestLog {  
  2.     public static void main(String[] args) {  
  3.         int i = 1;  
  4.         while (i <= 200000) {  
  5.             try {  
  6.                 Long l = null;  
  7.                 l.toString();  
  8.             } catch (Exception e) {  
  9.                 if (e.getStackTrace().length == 0) {  
  10.                     System.out.println("count is" + i);  
  11.                     break;  
  12.                 }  
  13.             }  
  14.             i++;  
  15.         }  
  16.     }  
  17. }  
运行结果:
[fin@vm-crm-dev-144-100 longer]$ java TestLog
count is20708
为了能看到堆栈,可以重启服务器再观察,也可以看下以前老的日志。

但是大部分情况下,我们建议还是去掉此优化:通过启动参数中加入:
-XX:-OmitStackTraceInFastThrow

1
0
分享到:
评论

相关推荐

    Java如何自定义异常打印非堆栈信息详解

    例如,可以使用Logger来将异常信息记录到日志文件中,从而实现非堆栈信息的打印。 四、示例代码 下面是一个简单的示例代码,演示如何自定义异常打印非堆栈信息: ```java public class CustomException extends ...

    在SpringBoot中使用logback优化异常堆栈的输出.doc

    在SpringBoot应用中,日志记录是至关重要的,特别是在处理异常时,清晰、精简的异常堆栈信息有助于快速定位问题。本文将详细介绍如何利用logback优化SpringBoot应用中的异常堆栈输出,以提高日志的可读性和实用性。 ...

    Logback 异常日志减少打印内容

    在日志模式中,减少`%throwable`的深度或完全移除可以避免过多的堆栈信息: ```xml &lt;pattern&gt;%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n%ex{1} ``` 在这个例子中,`%ex{1}`只会显示异常堆栈的...

    使用Python将Exception异常错误堆栈信息写入日志文件

    假设需要把发生异常错误的信息写入到log.txt日志文件中去: import traceback import logging ... #方案一,自己定义一个文件,自己把错误堆栈信息写入文件。 #errorFile = open('log.txt', 'a') #errorFil

    VC中打印当前调用堆栈信息实例

    在实际开发中,可以根据具体需求进行调整,例如添加更详细的日志信息,或者将堆栈信息输出到文件,以便后续分析。 总的来说,理解和利用调用堆栈信息对于提升VC程序的调试效率和质量具有重要意义。结合源代码分析,...

    异常堆栈回溯 找出异常地址

    对于Java等高级语言,JVM提供了堆栈跟踪信息,开发者可以通过日志或专门的异常处理器获取。 在压缩包文件"说明.txt"和"Under the Hood"中,可能包含了更详细的步骤、示例和工具使用说明。阅读这些文件可以帮助你...

    记录异常日志工具

    异常日志中的日期信息非常重要,因为它可以帮助我们了解错误发生的具体时间。在上述代码中,我们在写入日志时包含了当前日期和时间。如果需要更精确的时间戳,可以考虑使用DateTimeOffset,它提供了与UTC时间的准确...

    程序崩溃的时候可生成崩溃堆栈日志的库

    以下是调用的方法,在主程序入口函数第一行动态加载异常捕获库,崩溃后可以在运行目录下生成如【进程名称.exception】的文件,可以看到崩溃的堆栈信息 void main() { //Install our crash handler HMODULE ...

    Spring Boot详细打印启动时异常堆栈信息详析

    为了解决这个问题,Spring Boot引入了`FailureAnalyzer`接口,帮助开发者详细地分析并打印出启动时的异常堆栈信息。 `FailureAnalyzer`接口位于`org.springframework.boot.diagnostics`包下,它只有一个方法`...

    浅谈log4j 不打印异常堆栈

    正确的配置可以帮助我们获取到完整的异常堆栈信息,而错误的配置可能会导致日志记录的失败。 知识点7: 异常堆栈信息的用途 异常堆栈信息可以帮助程序员快速定位错误的位置,并且可以帮助程序员快速修复错误。 ...

    Logger.error打印错误异常的详细堆栈信息

    Logger.error打印错误异常的详细堆栈信息 Logger.error是一个非常重要的日志记录方法,用于记录错误异常的详细信息。 Logger.error可以打印出错误异常的详细堆栈信息,但是如果使用不当,可能只能打印出异常类型,...

    错误日志库实现打印错误堆栈

    1. **堆栈跟踪**:获取当前进程的堆栈信息。在Unix/Linux环境下,可以使用`backtrace`函数(在glibc中提供)获取函数调用的地址数组。这些地址对应于程序计数器在各个栈帧的位置。 2. **符号解析**:将这些地址转换...

    异常+开源日志

    - **异常日志**:记录程序运行过程中发生的异常信息。 - **业务日志**:记录业务操作细节,如用户登录、操作记录等。 ##### 使用log4j - **安装**:首先需要下载log4j的jar文件。可以在Apache官方网站上找到log4j的...

    android工程全局异常处理-将未处理异常日志保存在文件中,可后续开发提交至服务器

    本篇主要介绍如何实现一个全局的异常处理机制,以便将未处理的异常日志保存到本地文件,并在后续开发中将这些日志提交至服务器进行分析。 首先,我们需要创建一个`ExceptionHandler`类,这个类将会作为全局的错误...

    SpringBoot打印启动时异常堆栈信息详解

    SpringBoot 打印启动时异常堆栈信息详解 SpringBoot 是一个流行的 Java 框架,用于快速构建生产级别的应用程序。然而,在项目启动时,如果遇到异常,SpringBoot 并不能友好地打印出具体的堆栈错误信息,而只能查看...

    BugTrap - C++程序崩溃堆栈信息收集

    3. **捕获异常**:一旦初始化完成,BugTrap会在全局范围内监控程序,当检测到未处理的异常时,它会立即激活,收集堆栈信息和其他相关数据。 4. **收集信息**:BugTrap会收集诸如崩溃时的内存快照、进程信息、系统...

    python实现异常信息堆栈输出到日志文件

    将try except中捕获到的异常信息输出到日志文件中,方便查找错误原因,tranceback模块提供了把详细出错堆栈信息格式化成字符串返回函数format_exc(). 具体代码如下 import traceback import logging logging....

    强大的日志框架,能记录程序中出现的异常

    通过日志框架,我们可以设置不同级别的日志输出,如DEBUG、INFO、WARN、ERROR和FATAL,这样就可以在发生异常时立即得知,并记录下异常的详细信息,包括堆栈跟踪,这对于后期分析问题原因非常有帮助。 描述中提到的...

    C#异常插入日志文件

    本文将详细介绍如何在C#中捕获异常,并将其详细信息记录到日志文件中。 #### 二、异常捕获与处理 1. **异常对象**:在C#中,所有的异常都是`System.Exception`类或其派生类的实例。 2. **捕获异常**: - 使用`try...

    linux程序崩溃堆栈信息打印库

    除了这两个主要函数,`libexecinfo`还提供了一些辅助功能,如`backtrace_symbols_fd`,它可以将堆栈信息输出到指定的文件描述符,这在自动化日志收集或远程故障排查中非常有用。 在实际使用中,通常会在程序启动时...

Global site tag (gtag.js) - Google Analytics