断点

他山之石:调试之剑

家住魔仙堡 提交于 2019-12-30 19:21:47
弗雷德里克·布鲁克斯( F r e d e r i c k P·B r o o ks ) 博士在他那篇著名的《没 有 银弹— 软件工程 中的根本和次要问 题》 一文 中 , 将软件项目比作可怕的人狼 (w e r e w o l v e s ) , 并大胆地预言十年内不会 找到特别有效 的银 弹 。 该论文发表的时 间是 19 8 6 年 , 如今整整 2 0 年过去了 , 尽 管不时有人惊呼找到 了神奇的银弹 , 但是 冷静的人们很快发现那只是美好的愿望 。 如果说 软件工业 中与人狼 的战 斗还在持续 , 那么在这些战役 中一 定会有程 序 员的身影 , 笔者 也是 其中的一个。 我的 编程生涯是从使用汇编语言编写 D O S 下 的 T SR 程序开始的。 今天 D O S 操作 系统 已经成为历史 , 在那个年代最值得炫 耀 的 T S R 技术也早 已经过时了 。 十几年 中 ,O W L、V F W、V D X、ISA P I、A e ti v e M o v i e 等技术也被 时间淘汰… …然而 , 在这漫 长的时间当中 , 我最看重的是软件调试技术。它是十几年中我学到的最有用、一直受用、而且 日久弥新的一项技术。 从软件 工程 的角度来讲 , 软件调试 是软件 工程 的一个重要部分 , 软件调试 过程 出现在软 件工程的各个阶段 。 从最初的可行性分析、原型验证

C# Debug

依然范特西╮ 提交于 2019-12-30 04:30:41
语法、IDE环境使用、Debug方法是学习一门语言的 最少必须技能 ,本文总结C#中的最常用调试方法 一、 断点 如下图所示在欲插入断点的地方右键》断点》插入断点(或在行号左边点击)可在选中语句上插入断点: Debug模式下程序运行到断点所在语句时会阻塞在该语句上,如下图所示 此时可以通过工具栏上“逐语句”、“逐过程”、“跳出”即 来进行调试,调试期间光标放在变量上可以显示变量的当前值。 二、 跟踪点 在图1中,不仅可以插入断点,也可插入跟踪点,跟踪点是一种特殊的断点,可以配置为满足一定条件后才命中该断点,并可以将重要信息输出到Output窗口,类似于Debug.WriteLine(),它实际上是输出 调试 信息且不修改代码的一种方式。 根据配置不同跟踪点有如下三种形状,从上到下依次为 输出信息并阻塞 输出信息不阻塞 条件性阻塞并输出信息 三、 Debug与Trace类记录调试信息 //System.Diagnostics.Debug类与System.Diagnostics.Trace可用于记录并输出调试信息 System.Diagnostics.Debug.Write("info"); System.Diagnostics.Debug.WriteIf(true, "info"); System.Diagnostics.Debug.WriteLine("info"); System

Redis5源码阅读【3-Redis编译与GDB调试】

家住魔仙堡 提交于 2019-12-29 19:30:05
文章目录 1、介绍 2、Redis编译 2.1、获取源码 2.2、目录介绍 2.3、编译前的准备 2.4、开始编译 3、GDB调试 3.1、安装GDB 3.2、GDB调试编译好的Redis 3.2.1、GDB模式启动 3.2.2、在Redis源码上打断点 4、结束 1、介绍 本章主要是为了介绍Redis的编译方式,以及使用GDB对Redis进行调试的方法,为后面讲解源码打下基础,同时也介绍GDB这个C语言代码调试利器的部分使用 2、Redis编译 Redis编译应该是一个必须掌握的技能,毕竟很多时候我们并不一定会直接使用Redis编译好的包类型,可能会更具当前操作系统的情况,调整部分源码编译后再使用,例如Redis5当前的版本是不支持Windows的,如果大家想要使用Windows版本的Redis最好去官网下载Redis3以及之前的版本去自行编译使用,此外当大家希望能在Redis中加入一些日志或者其它东西的时候,一样需要修改源码进行编译,那么下面就介绍一下官方的推荐的编译步骤(很简单的) 2.1、获取源码 自行编译的第一步当然就算获取源码,Redis获取源码的方式最直接的就是github,这里我贴出Redis的github地址: https://github.com/antirez/redis ,或者你可以通过github搜索Redis: 当然github上面的是最新版本的代码

gdb与Cmake的使用

帅比萌擦擦* 提交于 2019-12-29 16:19:46
文章目录 编写程序以及CMakeList.txt文件 编译 调试 使用gdb运行程序 查看代码 查看主文件代码 查看指定函数代码 设置断点 查看所有断点 断点操作 删除断点 禁用断点 启用断点 运行 开始执行并在main第一行停下来 打印内部变量 手动修改变量值 跟踪查看变量值 继续运行直到下一个断点 查看堆栈 执行下一行(不进入函数) 执行下一行(会进入函数) 终止正在调试的任务 退出调试环境 编写程序以及CMakeList.txt文件 代码可在下方链接查看 https://github.com/heyanwei/OpenCVLearning 在此处,只是说明CMakeList.txt中要定义的内容 cmake_minimum_required(VERSION 2.8) project(DEMO) SET(CMAKE_BUILD_TYPE "Debug") # 定义编译类型 SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb") # 定义Debug编译参数 SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") # 定义Release编译参数 find_package(OpenCV REQUIRED) aux_source_directory(.

phpstorm设置断点过程

一曲冷凌霜 提交于 2019-12-29 12:03:23
1.为php安装xdebug,方法在上一篇中有详细介绍 2.注意这个时候需要修改php.ini内容如下: [Xdebug] zend_extension_ts ="d:/wamp/php/ext/php_xdebug-2.1.2-5.2-vc6.dll" xdebug.auto_trace=On xdebug.collect_params=On xdebug.collect_return=On xdebug.trace_output_dir="d:/wamp/php/debuginfo" xdebug.profiler_enable=On xdebug.profiler_output_dir="d:/wamp/php/debuginfo" xdebug.idekey=PhpStorm xdebug.remote_enable=on xdebug.remote_host=localhost xdebug.remote_port=9000 xdebug.remote_handler=dbgp 3.phpstorm配置 客户端调试,打开 phpStorm ,进入File>Settings>PHP>Servers,这里要填写服务器端的相关信息,name填localhost,host填localhost,port填80,debugger选 XDebug 进入File>Settings>PHP

phpstorm设置断点调试

断了今生、忘了曾经 提交于 2019-12-29 12:02:56
环境是:wamp PHP Version: 5.5.12 网上的教程很多,我自己按照教程操作,实现了断点调试,下面是我设置断点调试的步骤 1.修改配置文件php.ini,按下面修改(位置在最后) ; XDEBUG Extension zend_extension = "D:/wamp/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11.dll" ; [xdebug] xdebug.remote_enable = on xdebug.remote_host="127.0.0.1" xdebug.port=9000 xdebug.profiler_enable = on xdebug.profiler_enable_trigger = off xdebug.profiler_output_name = cachegrind.out.%t.%p xdebug.remote_autostart=on xdebug.profiler_output_dir = "D:/wamp/tmp" xdebug.show_local_vars=0 xdebug.idekey = PHPSTORM 修改完后重启服务 用phpinfo查看,出现如下配置,则代表修改成功 2.phpstorm设置 File->Settings-> PHP->Server

使用Webuploader大文件分片传输

梦想与她 提交于 2019-12-29 08:54:35
背景:50G大文件的HTTP上传至服务器。 好了,根据这个命题,可以开始研究我们怎么做才能把这么大的文件上传成功。 分片上传是肯定的,断点续传也是要有的,进度可视化那就更好了,基于这些,我选择了Webuploader在前端进行分片上传。 为什么选择它呢,好吧,它简单,易上手,好排错,文档多...... 实际是我懒...... 网上的教程大部分是复制粘贴,借鉴起来也很无奈,推荐一个我觉得比较实在的 https://www.cnblogs.com/baiyunchen/p/5383507.html 本篇Demo地址,欢迎各位大佬指点 https://github.com/papapalh/Big_File 一:开始 新建立项目,这里用了php7.0版本后台处理。 没啥说的,下载WebUploader的包 http://fex.baidu.com/webuploader/download.html jQuery也是必须的,因为就是依赖jQ的。 好了,可以初始化我们的上传组件了,介绍一下这里Demo的配置 // 创建上传 var uploader = WebUploader.create({ swf: '/webuploader-0.1.5/Uploader.swf', server: 'index.php', // 服务端地址 pick: '#picker', //

idea debug 启动慢出现假死

雨燕双飞 提交于 2019-12-28 22:54:32
断点设置不合理引发应用启动慢 问题 java idea应用启动很慢|非常慢|超级慢的问题排查! 解决 关于应用启动超慢这个问题,其实两年前就已经遇到过,https://blog.csdn.net/li396864285/article/details/52944814 当时的解决方案时,把所有断点Mute breakPoints去掉,然后启动就正常了。 排查 如今,再次遇到这个问题,不能再忍了,该问题必须查明详细的原因,反复debug启动多次都是一样的结果,超慢,阻塞在连接zk的地方就不动了,debug窗口出现如下信息:Method breakpoints may dramatically slow down debugging。 分析 果然,断点打在了不该打的地方,当程序启动一直阻塞假死的同时,电脑也卡得不行。于是使用top 命令观察性能和资源消耗情况,启动的java进程一直占用cpu接近100%。 总结 反复试验过后,得出猜测的结论:当我们把断点打在方法上,会导致jvm初始化装载该类的时候,idea加载此时的debug信息(包括线程上下文,变量快照等),从而出现异常情况,一直循环加载debug信息无果,最终出现程序假死,阻塞启动。 断点无论是加在类的方法,还是接口的方法上,都会出现上面的启动慢,程序假死的情况。 另附 附图说明如下: 版权声明:本文为博主原创文章

vs2010远程调试断点无效问题

安稳与你 提交于 2019-12-27 05:11:12
ps:本人按照下面的方式设置成功,个人感觉写的也比较清楚 来源: http://www.cnblogs.com/OpenCoder/archive/2010/02/17/1668983.html vs支持远程调试但是对于通过 匿名调试的方式实际上是无法设置断点的,因为符号没有加载!要想调试,必须采用windows身份验证! 也就是和远程主机设置一样的用户名和密码. VS是支持远程调试的,这样在自己公司就可以远程调试在客户机上的程序了 VS的远程调试分为两种: 直接远程调试:这种调试方法必须在有VS项目文件下才可以使用(因为被调试机的地址要在项目文件中设置),具体内容请见: http://www.cnblogs.com/tengs2000/articles/1070760.html 里的方法一 附加进程调试:具体内容请见: http://www.cnblogs.com/tengs2000/articles/1070760.html 里的方法二 这里我只说几个要值得注意的地方 1、附加进程调试又分为两种:(1)Window身份验证远程调试 (2)匿名远程调试 Windows身份远程调试在调试主机上VS里的附加进程要用 默认模式,这里请注意不要被远程模式的字面意思欺骗了,"远程(无身份验证时仅限本机)"这个模式实际上指的是匿名远程调试需要输入被调试的主机名和端口号

linux之gdb调试

偶尔善良 提交于 2019-12-27 04:26:05
1、编译要加上-g选项 gcc -g -o hello hello.c 2、常用命令 l 查看源码 , b 加断点, r 开始运行调试, n 下一步, s下一步但是会进入子函数. p 输出数据. info args查看当前函数参数值;info locals 看当前函数栈上值信息;info registers 表示查看寄存器值 3、设置条件断点: b _add if g_val==10 4、删除断点 d + 断点索引1,2,3.. 5、多线程调试 info threads 查看所有运行的线程信息; thread 3表示切换到第三个线程; 6、gdb在ARM开发板上调试 到http://www.gnu.org/software/gdb/download/下载gdb包 (1)在本机PC安装arm-linux-gdb客户端 #tar jxvf gdb-7.2-tar-bz2 #cd gdb-7.2 #./configure --target=arm-linux --prefix=/usr/local/arm-gdb –v(--target配置gdb的目标平台,--prefix配置安装路径) #make #make install 这里使用的arm-linux-gcc版本一定要与编译开发板内核的gcc版本一致 这样arm-linux-gdb的客户端就安装到了--prefix所配置安装路径里。