• 1. 启动参数 Eclipse快捷方式 启动Eclipse时很慢?启动后总是卡在初始化界面上?总是报内存溢出? Eclipse启动参数: -vm jdk目录\bin\javaw.exe-Vmargs -Xms256m -Xmx512m
  • 2. 启动参数运行参数 明明设置了启动参数,启动中间件的时候多选几个业务模块就内存溢出? 客户端查询一两张单据没事,单据数量一多就内存溢出 ? 设置Server和start的运行参数,指定内存大小 -XX:PermSize=256m -XX:MaxPermSize=512m -Xms1024m –Xmx1024m
  • 3. 启动参数中间件运行参数
  • 4. 基础介绍引子 为什么XX找某个类,点一下就找到了,我却得找半天? XX调试的时候点了下哪就很方便的看到当时的变量值了?
  • 5. 常用窗口Package Explorer视图
  • 6. 常用窗口Debug视图 用于在工作台中管理程序的调试或运行。它可以显示每个调试目标中挂起线程的堆栈框架。
  • 7. 常用窗口Variables视图 显示了选中的堆栈帧中的变量值。要查看所请求的变量,只需展开 Variables 视图中的树直到看到所请求的元素为止。 选中变量右键Change Value选项,能够改变变量的值。
  • 8. 常用窗口Breakpoints 视图  列出当前设置的断点,可选择启用哪些断点或屏蔽所有已设置的断点。
  • 9. 常用窗口Expressions视图 在该视图设置表达式,并在当前堆栈帧的上下文中显示表达式的取值。
  • 10. 快捷方式常用快捷方式 F3 打开声明 Alt+← 前一个编辑的页面 Ctrl+L 定位在某行 Ctrl+/ 注释当前行,再按则取消注释 Ctrl+O 快速显示 OutLine,查看一个类的纲要,列出其方法和成员变量。 Ctrl+T 快速显示当前类的继承结构,列出接口的实现类列表
  • 11. 快捷方式常用快捷方式 Ctrl+Shift+T 打开类型,快速定位到某个类 支持 * 通配符。例如SaleOrder*Action类,会显示所有以SaleOrder开头,Action结尾的类。 Ctrl+Shift+R 打开资源,可快速打开xml文件 Ctrl+Shift+X 把当前选中的文本全部变为大写 Ctrl+Shift+Y 把当前选中的文本全部变为小写
  • 12. 快捷方式编辑快捷方式 Alt+Shift+R 重命名 (对于变量和类的Rename,比手工方法能节省很多劳动力)  Alt+?上下文信息,弹出补全信息 Ctrl+F  查找并替换 Ctrl+Shift+O  组织导入,可快速导入引用包或去掉不存在引用的包
  • 13. 快捷方式调试快捷方式 F5 (step into) 单步执行,遇到子函数就进入并且继续单步执行。 F6 (step over) 单步跳过,在单步执行时将子函数整个执行完再停止,也就是把子函数整个作为一步。 F7(step return) 单步返回,单步执行到子函数内时,执行完子函数余下部分,并返回到上一层函数。
  • 14. 快捷方式调试快捷方式(续)  F8 继续,对于(run)型的断点,跳到下一个断点,对于变量型断点,跳到下一处改变此变量的地方。 Ctrl+R  运行至,可让程序直接运行到指定行。 Ctrl+Shift+I(Inspect) 快速查看变量值
  • 15. 快捷方式Drop to Frame Drop to Frame功能虽然不属于单步调试的核心,但是该功能非常的适用,它为调试人员提供了调试回退的机会。Drop to Frame可以重新跳到当前方法的开始处重新执行,并且所有上下文变量的值也相应回到初始时刻。
  • 16. 调试技巧引子 问题怎么老是跟不出来,到底该怎么打断点啊? 没有源码让我怎么跟啊? 授之以鱼,不如授之以渔
  • 17. 常用断点普通断点( Line Breakpoint) 在Eclipse Java编辑区的行头双击或右键菜单选择“ToggleBreakpoint”就得到一个断点,代码运行到此处时停止。
  • 18. 常用断点条件断点 条件断点,顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才会在运行到断点处时停止。 在断点处点击鼠标右键,选择最后一个“Breakpoint Properties” ,在弹出的断点属性界面设置条件。
  • 19. 常用断点条件断点 断点的属性界面及各个选项
  • 20. 常用断点变量断点(Watchpoint) 在变量上设置断点,当变量的值初始化或是改变时停止 适用于不了解或不关心程序的运行过程,比较关注某个关键变量的变化或使用
  • 21. 常用断点方法断点( Method Breakpoint) 方法断点就是将断点打在方法的入口处 特别之处在于它可以打在 JDK的源码里或没有源码的情况下,可以通过这种方法查看方法的调用栈。
  • 22. 常用断点异常断点( Exception Breakpoint ) 某个特定异常发生时程序能够被中断,以便查看程序当时所处的状态 设置Exception Breakpoint的方法与其它类型断点都不同,点击Breakpoints视图右上角的图标。
  • 23. 常用断点类加载断点( Class Load Breakpoint) 当某个类被加载时,通过该断点可以中断程序
  • 24. 常用断点断点位置 问题爆发点 必经之路 工厂方法 构造方法
  • 25. 实用技巧快速查看变量信息 在调试时可选中变量,点击Ctrl+Shift+I,在弹出的变量信息框中选择要查看的信息即可。
  • 26. 实用技巧异常信息快速定位 当系统出现异常时,会在日志中打印异常堆栈,能够通过异常信息快速定位问题出现点。
  • 27. 实用技巧远程调试tomcat windows中在catalina.bat添加1行: set "CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" linux中在catalina.sh 添加1行: CATALINA_OPTS="-Xdebug  -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" 亦可不配置,用命令 ./catalina.sh jpda start 启动tomcat(默认8000端口)
  • 28. JPDA & Eclipse Debug JPDA-- Java Platform Debugger Architecture [1] JVM TI: a new interface introduced in J2SE 5.0 which replaces JVMDI. It defines the debugging services a VM provides. JDWP : Defines the communication between debuggee and debugger processes. JDI : Defines a high-level Java language interface which tool developers can easily use to write remote debugger applications.
  • 29. JPDA & Eclipse Debugdebuggee The debuggee is the process being debugged, it consists of the application being debugged (not shown), the VM running the application and the back-end of the debugger. back-end The back-end of the debugger is responsible for communicating requests from the debugger front-end to the debuggee VM and for communicating the response to these requests (including desired events) to the front-end.  Written in native language communications channel connector : a JDI object that is the means by which a connection is established between the front and back-ends. listening connectors: The front-end listens for an incoming connection from the back-end attaching connectors: The front-end attaches to an already running back-end. launching connectors: The front-end actually launches the java process that will run the debuggee code and the back-end. transport: is the underlying mechanism used to move bits between the front-end and the back-end. (unspecified)
  • 30. JPDA & Eclipse Debug JVM debugger running JVM establish a listener waiting for the connection from the debugger Two types : Shared memory – local debug socket – remote debug Example: -Xrunjdwp:transport=dt_socket,server=y,address=8000  -Xrunjdwp:transport=dt_shmem,server=y,suspend=n  Eclipse debug tricks Break point : on method, variable, conditional break point Change variable value Remote debug Local machine as client Local machine as server
  • 31. Remote Debug Introduction Local machine as a client, remote jvm as a server Here, using a tomcat as a example Set up Environment 1. Start up Tomcat using a jvm with debug status catalina.bat(.sh), JPDA_TRANSPORT,JPDA_ADDRESS. catalina jpda start
  • 32. Remote Debug Set up Environment 2. Create a remote debugger in Eclipse
  • 33. DEMODebug a web service – poi search Deployment a poi search demo webservice in tomcat under axis
  • 34. DEMOSetup Tomcat
  • 35. DEMOSetup Eclipse
  • 36. DEMODebug
  • 37. DEMOdebug