这里将告诉您如何使用加多宝(jdb)在linux下调试Java程序,具体操作方法:

毕业时写了一段时间的C,那时候调试使用gdb,后来转了java,当时就想java程序怎么调试,找了一下,果然,那就是jdk自带的jdb

windows里是这样的

Linux下是这样的

一般我在linux下来调试Java程序

好,那么,问题来了,这玩意怎么用?有好几种玩法

第一种玩法:以经典的HelloWorld为例,先写一个Java程序,如下:

我们把编译好的类上传到linux下,如下所示

务必强调一下:类所在的包名的层次结构也要在linux下体现出来

下面我们来玩起来,在linux下操作如下

程序顺利debug,每次都输出当前的位置,就是line=5 这样的,也可以使用where来查看当前的线程栈,如下所示

好,到这里,入门完成,读者可能一脸懵逼,debug过程中没法看到源码啊,这是因为我们只有class,没有java文件

下面我们把java文件上传上来,可以上传到任何一个目录,只要后面正确指定就行了,创建一个文件夹

然后按照层次结构把源码上传上来

让我们重新组织下jdb的命令如下

开心吗?简单的debug就可以进行了

有的同学说我有很多jar,不是类,这也是可以的,自己多尝试一下,没有问题,碰到问题百度下

上面是通过jdb来启动一个程序,也有一种情况是程序在linux上跑得好好的,我想去调试的时候去调试,不想调试的时候让它自己运行不去打扰它

以我最近调试的flink为例,ps -ef一把看一下

程序启动的命令行里加上这些参数,然后怎么使用呢?在你想要去debug它的时候,使用下面的命令

这个时候,jdb已经跟目标进程建立了关系,因为断点还没有触发,所以我们什么都看不到,我们尝试来发送一条消息到kafka来触发这个断点的hit

顺利命中,这里没有源码出现,是因为我没有放源码,我是在本地eclipse里打开java代码对比着看,读者也可以上传到linux下来玩,方法上面已经说过了

执行一把where看详细的当前位置

时刻提醒你是谁,你在哪,你在干什么,别迷失了方向,迷茫的时候就执行一把where就会找到新的方向

这种方式不用指定class在哪,因为我们是连接到进程来实现debug,进程都起来了,也不用担心class的识别了

好,简单的debug其实已经可以了,下面讲一下jdb的命令有哪些

传送门:https://blog.csdn.net/xiaodejun5241/article/details/8162923

读者可以在实践中来掌握这些命令的使用

当你把所有源码都debug完一遍的时候,相信我,你的巅峰之路就开始了!

如何使用加多宝(jdb)在linux下调试Java程序就为您介绍到这里,感谢您关注懒咪学编程c.lanmit.com.

本文地址:https://c.lanmit.com/redianjishu/yunjisuan/18576.html

JAVA如何在LINUX里编程,如何使用加多宝(jdb)在linux下调试Java程序相关推荐

  1. (47)LINUX应用编程和网络编程之二Linux文件属性

    Linux下的文件系统为树形结构,入口为/ 树形结构下的文件目录: 无论哪个版本的Linux系统,都有这些目录,这些目录应该是标准的.各个Linux发行版本会存在一些小小的差异,但总体来说,还是大体差 ...

  2. Linux系统编程----12(线程概念,Linux线程实现原理,栈中ebp指针和ebp指针,线程的优缺点和共享资源)

    线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程(thread). 更准确的定义是:线程是"一个进程内部的控制序列" 一切进程至少都有一个执行线程 线程在进程内部运行,本 ...

  3. linux系统编程课程改革,项目驱动的Linux操作系统课程教学改革

    摘 要 <Linux操作系统>是一门应用性很强的课程,在技师学院已被列为计算机网络技术专业的教学计划.在传统的教学模式中,教师往往按照教材编排的顺序,把知识介绍给学生,而不是把知识的应用方 ...

  4. Jmeter的Java脚本往Kafka里传数据(SASL认证)——记第一次写JAVA的Jmeter脚本,超详细。

    需求:需要使用jmeter往Kafka里压大量的数据. 这里使用java写一个工具也可以实现,但是之前没自己写过Jmeter脚本.整体的思路就是继承AbstractJavaSamplerClient类 ...

  5. linux里的文件怎么复制到移动硬盘,linux数据拷贝复制到移动硬盘的问题

    问题:我服务器中有些数据需要find出来拷贝到移动硬盘中,并保持原目录结构, find ./ -name '*' -exec cp -v --parents {} /mnt \; 我是这样写的,./下 ...

  6. linux里c库和gnu c库,Linux下的C的库文件和头文件有什么区别-

    Linux下的C的库文件和头文件有什么区别- (2012-04-10 01:16:57) 标签: linux 杂谈 Linux下的C的库文件和头文件有什么区别?刚刚接触 这里有点没搞清楚 如果按我的理 ...

  7. Linux Shell编程(5)——shell特殊字符(下)

    {} 代码块[花括号]. 这个结构也是一组命令代码块,事实上,它是匿名的函数.然而与一个函数所不同的,在代码块里的变量仍然能被脚本后面的代码访问. bash$ { local a; a=123; } ...

  8. linux里的挂载错误无法开机怎么办,Linux基础知识 - 开机挂载错误

    开机挂载错误 我们可以在/etc/fstab设置开启挂载,不过如果在/etc/fstab定义了挂载信息可是实际并不存在此分区,开机进行分区挂载时就会产生错误,导致我们不能进入操作系统,如下图 根源在于 ...

  9. Linux网络编程服务器模型选择之并发服务器(下)

    转载:http://www.cnblogs.com/lizhenghn/p/3618986.html 前面两篇文章(参见)分别介绍了循环服务器和简单的并发服务器网络模型,我们已经知道循环服务器模型效率 ...

  10. Linux系统编程13:进程入门之Linux中的环境变量的概念及其相关命令(export;env等)main函数的参数

    文章目录 (1)为什么你的程序不能直接执行? (2)环境变量 (3)查看/设置环境变量 (4)和环境变量相关的命令总结 (5)通过代码获取环境变量 A:main函数的前两个参数 B:main函数的第三 ...

最新文章

  1. 涨知识了!网络原来是这样连接的
  2. 有点难度,几道和「滑动窗口」有关的算法面试题
  3. WBOLT热门关键词推荐插件v1.3.0 Pro 绿色版
  4. node和npm是什么_什么是npm? 面向初学者的Node Package Manager教程
  5. android 横向stepview,一款由Recyclerview打造的步骤控件,支持横向和纵向
  6. html5 音乐转盘,HTML5 幸运大转盘
  7. 服务案例|TAS系统安全深度威胁发现案例
  8. 你知道哪六种传统早餐不能吃吗?
  9. Python利用adb命令操作安卓手机批量打电话
  10. cadence SPB17.4 - CIS - add a new part
  11. matlab逐步积分,第17章 隐式逐步积分法.ppt
  12. 示例库 - 超过50个流程图 (Collection: Over 50 Flowchart Examples)
  13. Android GCM使用
  14. 流水账之 QQ农场 (VS) 农民伯伯的农场
  15. 【css】浮动和定位对元素的宽度-外边距或其他元素的影响
  16. Github使用教程【转】
  17. Java使用Spire.Doc将多个word里的内容合并到一个word里边,格式保留
  18. 不死的EternalBlue(永恒之蓝)
  19. JZ2440系统时钟和定时器
  20. 华为数据之道:数据分类管理框架和经验

热门文章

  1. 黑暗森林法则和猜疑链同样存在人和人之间
  2. 在一起盗窃案中,法官对涉及到的四名犯罪嫌疑人A,B,C,D进行了审问.
  3. Unity C# compiler: CS0121: The call is ambiguous between the following methods or properties
  4. DAC数模转换/ADC模数转换
  5. 如何让TCP重传如丝般柔滑
  6. 博客页面添加动态小人,二次元人物 hexo live2d html人物公仔
  7. java 多线程抢票_多线程抢票详解
  8. 使用海龟绘图,输出四个不同颜色矩形
  9. js中的引号使用不正确导致js方法传入参数类型错误
  10. Unity URP 渲染管线着色器编程 104 之 镜头光晕(lensflare)的实现