zoukankan      html  css  js  c++  java
  • 在Emacs调试JAVA程序,使用GUD模式

    很早以前就配置了在GUD模式下条用GDB调试C/C++程序。
    GUD其实是支持非常多的调试器的,但是功能只有GDB(即调试C/C++)的时候比较强大。
    GDB的设置可以参考:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    以下的配置是调试JAVA程序,用的也是GUD模式,是调用JDB实现的。
    而非JDEE或者其他为Emacs制作的IDE环境(我嫌那种模式太烦了,而且我没办法在win和linux共享配置)。


    在调试之前,编译的使用要加-g 参数,开启调试模式
    实例:javac test.java -g

    要开始调试需要用
    M-x jdb
    然后输入(XXX为要调试的class文件,不用带后缀名)
    jdb XXX


    这样就可以进入jdb-mode了
    可以通过指令进行操作
    gud-run 开始运行程序(直到遇到断点)
    gud-cont 继续运行程序(第一次要使用gud-run 之后要使用 gud-cont)
    gud-print 查看对象内容,和jdb的dump不太一样
    gud-break 设置断点
    gud-remove 清除断点
    gud-next 下一行(跳过函数)
    gud-step 步入(进入函数)
    gud-finish 跳出函数
    它默认有一些快捷键但是都太烦了,我都该成自己的了,下面有配置

    JDB和GDB不太一样,没有提供gud-go的现成方法,但是我自己写了个函数吧gud-run和gud-cont 统一了一下。


    在进入jdb模式的时候设置了一个jdb-need-run的全局变量


    这里有一个gud-kill也是一个自定义的函数,用于删掉debug的进程,(这个和GDB模式下的一样)


    还有几个问题,希望以后有时间能解决它
    1、下断点的时候没法想在GDB模式下载fring侧边栏显示一个小红点的表示
    2、因为没有侧边栏的小红点,就暂时没有现成的方法可以把设置断点和清楚断点绑在同一个快捷键上(GDB的实现是通过判断侧边栏有没有位图实现的)
    3、没有一个好的可以实时更新的watch窗口
    4、因为gud.el是内置在Emacs程序里面的,所以没办法改源代码,暂时不知道要怎么把jdb dump命令也绑定到gud命令上



    Emacs 就是一个坑,一个永远挖不完坑。。。。。

  • 相关阅读:
    $(document).ready() 与$(window).load()
    关于.NET玩爬虫这些事 【初码干货】
    关于c# .net爬虫
    UIScollView Touch事件
    UISearchBar 点击X 按钮收键盘
    IOS7 UITableView一行滑动删除后 被删除行的下一行的点击事件将被忽略解决办法
    IOS 使用dispatch_once 创建单例
    IOS 定位 单例
    IOS拷贝文件到沙盒
    IOS后台运行
  • 原文地址:https://www.cnblogs.com/atskyline/p/2546970.html
Copyright © 2011-2022 走看看