zoukankan      html  css  js  c++  java
  • java系列:《java核心技术 卷1》学习笔记,chapter 11 调试技巧

    11. 6 调试技巧
    1)一个不太为人所知却非常有效的技巧是在每个类中放一个main方法,这样就可以对每个类进行单元测试。这个方法可以保留,因为在java虚拟机只调用启动类的main方法。
    2)   日志代理,( logging proxy) ,通过一个子类对象,窃取父类的方法调用,并在其中进行日志记录,示例代码如下:
    1. Random random = new Random{
    2. public double nextDouble(){
    3. double result = nextDouble();
    4. Logger.getGlobal().info("nextDouble:" + result);
    5. return result;
    6. }
    7. }
    3)利用Throwable的printStackTrace方法来打印调用堆栈;其实不一定要通过异常来打印堆栈信息,只要在代码的任何位置调用Thread.dumpStack()就可以打印当前的调用堆栈信息。
        这样的信息一般显示在System.err中。
    4)如何在文件中捕获输出流和错误流
    1. 捕获输出流
    2. java MyProg >log.txt
    3. 捕获错误流
    4. java MyProg 2>log.txt
    5. 同时捕获输出流和错误流
    6. java MyProg >&log.txt
    5)可以改变非默认的捕获异常的处理器
    1. Thread.setDefaultUncaughtExceptionHandler{
    2. new Thread.UncaughtExceptionHandler(){
    3. public void uncaughtException(Thread t, Throwable e){
    4. //save info to file
    5. }
    6. }
    7. }
    6)如果想要看到类的加载过程,可以调用 -verbose 标志启动java虚拟机,这样可以看到类似于如下的一些输出结果。
    这种方法有助于诊断由于类路径引发的问题。




    7)使用 java -Xlint:xxxx 来告诉编译器做某些语法检查。
        
    8)有一个jconsole的程序可以用来监视java虚拟机的各种参数
        jconsole 虚拟机进程id

    9)可以使用jmap实用工具捕获一个堆的转储,其中显示了堆中的每一个对象,使用如下命令:
        jmap -dump:format=b, file=dumpfilename processId
        jhat dumpFileName
        
        然后就可以使用浏览器进入 http://localhost:7000 来查看该转存对中对中的对象

    10)如果使用 java -Xprof标志运行java虚拟机,就会运行一个基本的剖析器来分析那些在代码中经常被调用的方法。剖析信息将发送到 System.out 输出中。

    11.8 使用调试器
        这个基本会了,没啥好看的。    








  • 相关阅读:
    JMeter基础篇--录制web脚本(四)
    jmeter的基础使用(二)
    jmeter安装教程(一)
    delete用法(删除表内容)
    update用法(修改表内容)
    IPy对网段的处理
    netmiko
    读写conf文件
    读写json文件
    excel及数据处理
  • 原文地址:https://www.cnblogs.com/strinkbug/p/4999758.html
Copyright © 2011-2022 走看看