程序调试

硬件调试套路总结

纵然是瞬间 提交于 2020-03-30 17:04:36
一、何为调试,调试为何 这并不是废话,作为一个菜鸟而言,面对一块熟悉又陌生的板子如何下手调试也许并不是一件So easy的事。什么是调试呢?简单的说就是为了实现我们设计的所有功能在PCB板子上实现。但是调试的目的又不仅限于此,调试既要能验证过去,又要能启示未来。以上或许真是废话。 二、多数问题,套路即真理 作为一名入行不久的小兵,在为时不长的技术生涯里慢慢已经积累一点点所谓的经验,其实细细一想,解决问题还是有很多套路的。 电路板的核心——电源 电路板调试的第一步是电源,电源没有问题意味着设计成功了70%以上。那么电源调试中有几个要点: (1)上电前先测量各主路、分路电源是否短路,避免烧板。 (2) 最好设置几个电源指示灯,上电若有指示灯不亮,先断电检查。 (3) 测量各路电源值,并感受电源器件温度,是否有异常工作。 较常见的几种故障原因: (1)设计有误:这是真的,板子回来后你才发现原理图有错误。 (2)器件有错:包括用错,贴错,这个问题也很常见。 (3)设计缺陷:器件应用的不合理导致异常,这时要好好看看原理图和datasheet。 (4)生产缺陷:贴错的,虚焊的,漏焊的,连锡的,反向的....不要哭! 几点套路: (1)目检。一些生产缺陷和设计缺陷都能发现,要仔细! (2)换换换。最常见的套路,替换器件。 (3)步步为营,沿路查找,电源驱动的器件有问题的情况也很多。 (4

我是如何用IDEA调试BUG的?

和自甴很熟 提交于 2020-03-30 13:34:23
最近小明的bug有点多,忙的连王者荣耀都顾不上玩了,导致现在不得不抽点时间研究一下作为当前大多Java程序员开发工具的IDEA DEBUG功能,以提高效率。 一、条件断点 场景:我们在遍历某个集合,期望程序在满足某些预设条件时停住,比如:沐芳老师在课堂上点名,需要在点到小明的时候暂停确认一下是否有人在帮小明答“到”! 那沐芳老师可以这样: 右击断点旁边的小红点(断点),弹出面板,在 Condition 这里填入暂停条件,这样调试时,当程序满足条件时就会稳稳地停在 student= "小明" 的位置。 二、回到"过去" 场景:人非圣贤,孰能无过。在日常开发中,大家都有手残的时候,比如在调试一个业务逻辑比较复杂,有多个方法嵌套时,一不小心手抖,断点过去了,这该怎么办? 这天,沐芳老师如往常一样在上课前点名,当点到小明的时候,不争气的小明在偷偷看喜欢的妹子,没有注意听,当反应过来时,已经错过了答到!十分懊悔(红颜祸水啊),这时小明就可以借用大雄的机器猫进行时光穿梭: 观察上图,我们看到,按照点名顺序,现在沐芳老师点名已经轮到小红,小明已经错过答到,机器猫可以这样帮助小明:点击上图红色框框圈中的 Drop Frame 图标(如果存在多个方法的嵌套调用,可以多点几下),就这样,小明穿越了,没有错过这次的答到: tips :这个按钮之所以叫做 Drop Frame ,是因为 JVM 内部是以

Android中的DDMS进行调试

心不动则不痛 提交于 2020-03-30 03:06:52
原文链接: http://docs.eoeandroid.com/tools/debugging/ddms.html 安卓附带了一个叫Dalvik调试跟踪服务(DDMS)的调试工具它提供端口转发服务,屏幕截屏,线程和堆栈信息,日志,进程,电话状态信息,模拟来电和短信,模拟本地数据,等等。本页提供DDMS最新的功能概述;但不是所有功能和要点的详尽介绍。 运行DDMS DDMS集成在Eclipse中,同时也附带在SDK下的tools目录下。DDMS既可以在模拟器中工作也可以在已连接的设备上工作。如果同时连接了设备和运行了模拟器,DDMS默认在模拟器中运行。 从Eclipse打开:点击* Window > Open Perspective > Other... > DDMS* 。 从命令行打开:在tools目录下输入ddms(或./ddms在Mac/Linux) DDMS怎样与调试器交互 在安卓平台上,每个应用都运行在自己的进程上,同时每个应用也都运行在自己的虚拟机(VM)上。每个VM公布了唯一的端口号以供调试器连接。 当DDMS启动后,会连接到adb。当有设备连接上,VM监测服务就在adb和DDMS之间创建,它会通知DDMS 设备上的VM是启动了还是终止了。一旦VM是运行的,DDMS就获取VM的进程ID(pid),通过adb和设备上的adb守护进程(adbd)建立到 VM调试器的连接

Debug版本和Release版本的区别

这一生的挚爱 提交于 2020-03-29 19:17:15
一、Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不讨论) Debug 版本: /MDd /MLd 或 /MTd 使用 Debug runtime library(调试版本的运行时刻函数库) /Od 关闭优化开关 /D "_DEBUG" 相当于 #define _DEBUG,打开编译调试代码开关(主要针对 assert函数) /ZI 创建 Edit and continue(编辑继续)数据库,这样在调试过 程中如果修改了源代码不需重新编译 /GZ 可以帮助捕获内存错误 /Gm 打开最小化重链接开关,减少链接时间 Release 版本: /MD /ML 或 /MT 使用发布版本的运行时刻函数库 /O1 或 /O2 优化开关,使程序最小或最快 /D "NDEBUG" 关闭条件编译调试代码开关(即不编译assert函数) /GF 合并重复的字符串,并将字符串常量放到只读内存,防止 被修改

\"无法找到“XXX.exe”的调试信息,或者调试信息不匹配。。。转

别来无恙 提交于 2020-03-29 13:05:43
今天调试一C++程序,按下F5,老是弹出一对话框显示信息:debugging information for 'myproject.exe' cannot be found or does not match. No symbols loaded. 翻译成中文大概就是:不能找到'myproject.exe' 的调试信息或者调试信息不匹配。符号文件未加载。 起初,我以为是没有生成.pdb文件的缘故,于是,我右击项目文件,点击属性,展开配置属性节点,展开C/C++节点, 点击了General后把Debug Information Format设置为:Program Database for Edit & Continue(/ZI). 跟着,又检查了其它选项,并且确信在项目文件的Debug文件夹下生成了相应的.pdb文件。 可是做了这些,还是没用。仍然弹出那个该死的对话框。 我于是另外新启动了一个VS实例,新建了一个简单的工程,按下F5, 调试没问题,嘿,这问题到底出在哪儿呢?? 然后,我心想,你丫狠!看来我得来点比你更狠的,于是乎,我干脆运行咱的.exe文件,然后单击Visual Studio 的Tools菜单,选择Attach to process..., 并找到我的应用程序,还是没用!!!!我要发疯了!!!! 关键时刻咱得保持冷静!!!!分析下! 第一,我这个工程是前几天做过的。

你的网购价格监督利器——python+爬虫+微信机器人

こ雲淡風輕ζ 提交于 2020-03-28 17:00:51
前言 文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:风,又奈何 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun 准备工作: 首先本文使用py3,需要安装以下库: 1)itchat 2)requests 3)apscheduler 分析网页: 首先我们需要做什么?毫无疑问,分析网页,因为最重要的一步就是获取数据,那么如何获取数据就是我们首先要克服的困难 首先我们要明确一个地方,我们的目的是实时监控热门打折球衣,所以我们的价格肯定首先降序排列,不过先不用着急,打开F12先看下调试器,对了我使用的是chrome浏览器 由于我们是先打开网页再打开调试窗口,所以目前我们看不到数据,别急,我们刷新一下再看 哦吼,完蛋,怎么这么多东西貌似根本没法看 别急 继续分析,作为一个学(qiong)生(bi),我们肯定先关注价格了,当然要升序排列啊! 好的 点下浏览器调试窗口中的清除按钮(就是下面这个蓝色标记的按钮)先清除下调试台中的数据 然后呢我们点下筛选方式价格由低到高(红色标记的菜单键中选择) 得到调试台如下,完蛋了还是一堆怎么办? 没关系,至少现在网页内容已经是按照价格升序排列了,我们再来看看得到的Network数据,挨个点一点看看

ipdb调试

亡梦爱人 提交于 2020-03-28 11:26:13
  ipdb是一个交互式的调试工具,集成与python标准库当中,可以按需求跳转到任意的python断点,查看任意变量,单步执行代码,甚至修改变量的值,而不必重启程序。   要使用ipdb的话,在需要进行代码调试的地方插入ipdb.set_trace()。 try: import ipdb except: import pdb as ipdb def sum(x): r = 0 for ii in x: r += ii return r def mul(x): r = 1 for ii in x: r *= ii return r ipdb.set_trace() x = [1,2,3,4,5] r = sum(x) r = mul(x)     当程序运行到set_trace时,就会自动进入debug模式:   调用命令:n 单步执行,s 进入函数内部, !r 查看 变量的值(与调试命令return冲突 加!),break 9,就是在第九行设置断点,clear 清除所有的断点。 来源: https://www.cnblogs.com/a-runner/p/12586213.html

GDB调试——常用命令

天大地大妈咪最大 提交于 2020-03-28 01:09:18
命令 解释 示例 file <文件名> 加载被调试的可执行程序文件。 因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。 (gdb) file gdb-sample r Run的简写,运行被调试的程序。 如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。 (gdb) r c Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。 (gdb) c b <行号> b <函数名称> b *<函数名称> b *<代码地址> d [编号] b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。 其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。如果不了解汇编,可以不予理会此用法。 d: Delete breakpoint的简写,删除指定编号的某个断点,或删除所有断点。断点编号从1开始递增。 (gdb) b 8 (gdb) b main (gdb) b *main (gdb) b *0x804835c (gdb) d s, n s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数; n: 执行一行源程序代码,此行代码中的函数调用也一并执行。 s 相当于其它调试器中的“Step Into (单步跟踪进入)”; n 相当于其它调试器中的

远程调试docker构建的weblogic

↘锁芯ラ 提交于 2020-03-27 19:43:14
环境信息 OSType: CentOS Linux 7 (Core) x86_64 3.10.0-957.21.3.el7.x86_64 DockerVersion: 19.03.8 Mirrors: http://ovfftd6p.mirror.aliyuncs.com/ http://registry.docker-cn.com/ http://docker.mirrors.ustc.edu.cn/ http://hub-mirror.c.163.com/ WeblogicVersion: 12.2.1.3 - developer 部署Weblogic 法1:使用官方镜像 镜像地址: dockerhub 构建之后要运行 weblogic ,需要使用官方提供的示例,参考上篇文章中间部分: 利用Docker手动构建WebLogic镜像 。 法2:利用Dockfile手动构建 Oracle 的 Dockerfile 仓库地址: Github 。 使用方法参考 上篇文章 即可。 获取Weblogic相关源文件 在远程调试之前,需要先拿到 weblogic 源码或源文件(JAR包)。从镜像中就可以取出来,方法如下: 确定weblogic容器运行 找到服务器主目录 使用命令 docker exec -it weblogic /bin/bash 进入到容器当中,一般情况下 Oracle

基于VS Code搭建Python开发环境

孤街醉人 提交于 2020-03-27 08:19:19
配置与验证 1.输入 install Python或者点击工具和语言,在左侧列表中选择Python进行安装。 2.新建一个文件夹,里面创建一个XXX.py文件,使用vscode左上角文件->打开文件,打开XXX.py文件,并输入。 1 if __name__=="__main__": 2 print("hello vscode") 3.点击“调试”,选择Python并执行调试,此时在当前文件夹中会生成一个.vscode文件夹,其中有一个launch.json文件,记录了一些Debug的设置。 4.打开launch.json文件。 5.编辑launch.json文件,增加图中红框中内容并保存。 6.按F5调试程序,可以看到控制台上的输出,到这里关于Visual Studio Code编写Python的环境就已经搭建好了。 来源: https://www.cnblogs.com/geekshawn/p/12579006.html