程序调试

在Intellij IDEA中使用Debug

空扰寡人 提交于 2020-04-08 11:50:06
目录 一、Debug开篇 二、基本用法&快捷键 三、变量查看 四、计算表达式 五、智能步入 六、断点条件设置 七、多线程调试 八、回退断点 九、中断Debug 十、附:JRebel激活   Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。   所以学习下如何在Intellij IDEA中使用好Debug,主要包括如下内容:     一、Debug开篇     二、基本用法&快捷键     三、变量查看     四、计算表达式     五、智能步入     六、断点条件设置     七、多线程调试     八、回退断点     九、中断Debug     十、附:JRebel激活 回到顶部 一、Debug开篇   首先看下IDEA中Debug模式下的界面。   如下是在IDEA中启动Debug模式,进入断点后的界面,我这里是Windows,可能和Mac的图标等会有些不一样。就简单说下图中标注的8个地方:   ① 以Debug模式启动服务,左边的一个按钮则是以Run模式启动。在开发中,我一般会直接启动Debug模式,方便随时调试代码。   ② 断点:在左边行号栏单击左键,或者快捷键Ctrl+F8 打上/取消断点

掌握 Linux 调试技术

心不动则不痛 提交于 2020-04-07 20:48:30
摘自: https://www.ibm.com/developerworks/cn/linux/sdk/l-debug/ 摘自 https://www.ibm.com/developerworks/cn/linux/sdk/l-debug/#artrelatedtopics 本文讨论了四种调试 Linux 程序的情况。在第 1 种情况中,我们使用了两个有内存分配问题的样本程序,使用 MEMWATCH 和 Yet Another Malloc Debugger(YAMD)工具来调试它们。在第 2 种情况中,我们使用了 Linux 中的 strace 实用程序,它能够跟踪系统调用和信号,从而找出程序发生错误的地方。在第 3 种情况中,我们使用 Linux 内核的 Oops 功能来解决程序的段错误,并向您展示如何设置内核源代码级调试器(kernel source level debugger,kgdb),以使用 GNU 调试器(GNU debugger,gdb)来解决相同的问题;kgdb 程序是使用串行连接的 Linux 内核远程 gdb。在第 4 种情况中,我们使用 Linux 上提供的魔术键控顺序(magic key sequence)来显示引发挂起问题的组件的信息。 常见调试方法 当您的程序中包含错误时,很可能在代码中某处有一个条件,您认为它为真(true),但实际上是假

NDK调试之ndk-stack

三世轮回 提交于 2020-04-07 02:39:37
ndk-stack 工具使你能够在 stack traces 出现在 adb logcat 的输出中时过滤 它们。它也能将一个共享库中的任何地址替换为你的源码中的对应 <source-file>:<line-number> 值,以使问题能够更精确的描述。 比如,它能够将类似于下面的这些东西: I/DEBUG ( 31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** I/DEBUG ( 31): Build fingerprint: 'generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys' I/DEBUG ( 31): pid: 351, tid: 351 %gt;%gt;%gt; /data/local/ndk-tests/crasher <<< I/DEBUG ( 31): signal 11 (SIGSEGV), fault addr 0d9f00d8 I/DEBUG ( 31): r0 0000af88 r1 0000a008 r2 baadf00d r3 0d9f00d8 I/DEBUG ( 31): r4 00000004 r5 0000a008 r6 0000af88 r7 00013c44 I/DEBUG ( 31): r8

andriod学习code2 命令调试篇

廉价感情. 提交于 2020-04-07 02:01:30
andirod调试工具 adb.exe andriod debug bridge andriod调式桥 adb devices 列出所有的连接设备 reset adb 重启adb的调试桥 adb kill-server 杀死调试桥 adb start-server 启动adb调试桥 查看端口dos命令 netstat -ano adb install xxx.apk 安装一个程序 adb -s 设备名 install apk的path路径 assets 资产目录 存放一个文件的,这些文件会被打包到应用程序的apk(安装包) bin 编译后的文件目录 andriod系统是一个基于事件驱动行为一种系统 andirod添加事件驱动有四种方式 来源: oschina 链接: https://my.oschina.net/u/238082/blog/488641

分享一款一直在维护的【网络开发运维|通用调试工具】: http请求, websocket,cmd, RSA,DES, 参数签名工具,脚本批量生成工具,google动态口令,端口检测,组件注册,js混淆...

家住魔仙堡 提交于 2020-04-06 22:03:10
首先发下下载地址:https://files.cnblogs.com/files/taohuadaozhu/ConfigLab.Test.ex.rar 日常开发,运维,跨部门跨公司对接中。 想快速调试,验证一些接口,环境时需要快速处理的工具。本文章就分享这样的一样一款工具,界面粗糙,工具很接地气。 <1.总体界面> <2.非对称加密,RSA,OpenSLL等算法的对比,调试> <3.对称加密:DES,AES加密算法调试,对比工具> <4.对接第三方常用的参数签名运算工具,快速定位问题> <5.类似postman,支持http提交文件,图片,视频,也支持json等格式的提交> <6.支持打开,运行,输入各种指令,命令行程序> <7.websocket的服务端监听,客户端连接测试,调试> <8.google动态验证器,阿里云也在使用> <9.批量生成指令的处理工具> <10.批量修改文件名> <11.轻量的js混淆个工具,可结合第三方在线压缩,加密来使用,效果更佳> 来源: https://www.cnblogs.com/taohuadaozhu/archive/2020/04/06/12644183.html

利用 Cosole 来学习、调试JavaScrip

非 Y 不嫁゛ 提交于 2020-04-06 22:00:27
一 什么是 Console Console 是用于显示 JS和 DOM 对象信息的单独窗口。并且向 JS 中注入1个 Console 对象,使用该对象 可以输出信息到 Console 窗口中。 二 什么浏览器支持 Console 很多人可能都知道 Chrome 和 FireFox(FireBug)中都支持 Console。而其他浏览器都支 持不好。比如 IE8 自带的开发工具虽然支持 Console,但功能比较单调,显示对象的时候都是显示 [Object,Object],而且不能点击查看对象里面的属性。IE6、IE7 虽然可以安装 Developer Toolbar,但也 不支持 console。Safari、Opera 都支持 Console,但使用上都没有 FireBug和 Chrome 的方便。 现在firebug推出了 firebuglite工具,可以让所有浏览器都支持Console功能,而且使用上和FireBug 几乎一样。详见 http://getfirebug.com/firebuglite 后面的所有 demo 除特别说明外,都是使用 firebuglite在 IE8 下的测试截图。 三 为什么不直接使用 alert 或自己写的 log /*编程技术*/ 作者 熊星 使用 alert 不是一样可以显示信息,调试程序吗?alert 弹出窗口会中断程序,

linux 调试常用命令

大兔子大兔子 提交于 2020-04-06 13:25:47
top 参数 1 ,查看多核cpu 也可用 mpstat -P ALL pstate PID 查看进程堆栈 pmap -x PID 查看进程 内存段 ldd XXX.so 查看 .so 的link 信息 linux 查看线程 方法一:PS 在ps命令中,“-T”选项可以开启线程查看。下面的命令列出了由进程号为<pid>的进程创建的所有线程。 1.$ ps -T -p <pid> 2 “SID”栏表示线程ID,而“CMD”栏则显示了线程名称。 方法二: Top top命令可以实时显示各个线程情况。要在top输出中开启线程查看,请调用top命令的“-H”选项,该选项会列出所有Linux线程。在top运行时,你也可以通过按“H”键将线程查看模式切换为开或关。 1.$ top -H 2.要让top输出某个特定进程<pid>并检查该进程内运行的线程状况: $ top -H -p <pid> Linux系统下,大多数的性能监测工具保存在/proc目录下。这里我们将Linux AS 和 SUSE LINUX EnterpriseServer中的命令行及图形方式下的性能监测工具做概括性介绍。这些工具有些在系统工具盘里,有些可以从网上下载。sar,iostat,和pstat这三个工具在distributionCD里,也可以从网上下载,网址是 http://perso.wanadoo.fr

scipy的使用过程bug调试

别说谁变了你拦得住时间么 提交于 2020-04-05 20:31:05
C:\SoftApplication\Anaconda3\python.exe E:/pycharmprojects/test03/test01.py Traceback (most recent call last): File "E:/pycharmprojects/test03/test01.py", line 2, in <module> from scipy.integrate import quad,dblquad,nquad File "C:\SoftApplication\Anaconda3\lib\site-packages\scipy\integrate\__init__.py", line 95, in <module> from ._bvp import solve_bvp File "C:\SoftApplication\Anaconda3\lib\site-packages\scipy\integrate\_bvp.py", line 10, in <module> from scipy.sparse.linalg import splu File "C:\SoftApplication\Anaconda3\lib\site-packages\scipy\sparse\linalg\__init__.py", line 116, in <module>

段错误调试神器 - Core Dump详解

喜欢而已 提交于 2020-04-04 00:57:37
一、前言 : 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件某一行, 而是没有任何信息, 使得我们的调试变得困难起来. gdb: 有一种办法是, 我们用gdb的step, 一步一步寻找. 这放在短小的代码中是可行的, 但要让你step一个上万行的代码, 我想你会从此厌恶程序员这个名字, 而把他叫做调试员. 我们还有更好的办法, 这就是core file. ulimit: 如果想让系统在信号中断造成的错误时产生core文件, 我们需要在shell中按如下设置: #设置core大小为无限 ulimit -c unlimited #设置文件大小为无限 ulimit unlimited 这些需要有root权限, 在ubuntu下每次重新打开中断都需要重新输入上面的第一条命令, 来设置core大小为无限. 用gdb查看core文件: 下面我们可以在发生运行时信号引起的错误时发生core dump了. 发生core dump之后, 用gdb进行查看core文件的内容, 以定位文件中引发core dump的行. gdb [exec file] [core file] 如: gdb ./test test.core 在进入gdb后, 用bt命令查看backtrace以检查发生程序运行到哪里,

调试 node.js 程序

陌路散爱 提交于 2020-04-03 15:30:44
调试 node.js 程序 在程序开发中,如何快速的查找定位问题是一项非常重要的基本功。在实际开发过程中,或多或少都会遇到程序出现问题导致无法正常运行的情况,因此,调试代码就变成了一项无法避免的工作。这里简单介绍下如何调试 node.js 程序。 使用 console.log Node 提供了全局的 console 对象,该对象可以输出格式化的字符串。 console.log 是调试 Node 模块最简单的工具,console.log 主要有两个作用:一是将对象序列化为一个字符串,另一个是向标准输出流输出结果。 使用 console.log 检查对象: const obj = { a: 1, b: 2 } console.log(obj) 这段代码将打印出以下信息: { a: 1, b: 2 } 注意 :实质上 console.log 没有进行任何格式化操作,而是 console.log 内部调用了 util.format 将传入的参数格式化,并且将结果输出到标准输出流中。 console.log 函数只检查对象的自有可枚举属性,即在原型链上的属性以及不可枚举的属性都不会显示。 例如: const obj = Object.defineProperty({ a: 1, b: 2 }, 'a', { enumerable: false }) console.log(obj)