使用调试器逐步跟踪程序

我认识不少技术不错的C++/C程序员,很少有人能拍拍胸脯说通晓指针与内存管理(包括我自己)。我最初学习C语言时特别怕指针,导致我开发第一个应用软件(约1万行C代码)时没有使用一个指针,全用数组来顶替指针,实在蠢笨得过分。躲避指针不是办法,后来我改写了这个软件,代码量缩小到原先的一半。我的经验教训是:(1)越是怕指针,就越要使用指针。不会正确使用指针,肯定算不上是合格的程序员。(2)必须养成“使用调试器逐步跟踪程序”的习惯,只有这样才能发现问题的本质。1#include<iostream>23/*runthisprogramusingtheconsolepauseroraddyourowngetch,system("pause")orinputloop*/4usingnamespacestd;5intmain(intargc,char**argv){6//声明字符型数组和指针变量7charstr[10];8char*strip=str;910//输入输出11cout<<"str=";12cin>>str;//用字符数组输入字符串13cout<&l...

eclipse的使用和断点调试

断点:快捷键f5:stepintof6:stepover  跳过,跳到下一行f7:stepreturn  从某个方法里跳回跳出 droptoframe:跳到当前方法的第一行resume:跳到下一个断点。如果没有下一个,则运行完整个程序。watch:观察变量或表达式的值  断点注意的问题:1.断点调试完成后要在breakpoints视图中清除所有断点2.断点调试完成后,一定要记得结束运行断点的jvm  如果调试结束,绝对不能直接关掉调试,而是要执行完或者终止程序。否则虚拟机会一直在后台挂着...
代码星球 代码星球·2021-02-07

webkit内核浏览器的CSS写法

-webkit-tap-highlight-color:transparent;Mobile上点击链接高亮的时候设置颜色为透明-webkit-user-select:none;设置为无法选择文本-webkit-touch-callout:none;长按时不触发系统的菜单,可用在图片上加这个属性禁止下载图片:-webkit-full-screencanvas{}全屏模式时的样式(forDesktop)divp:matches(em,b,strong){}使用mathes来匹配多个选择器@mediaonlyscreenand(max-width:480px){}指定Mobile设备或者小屏幕桌面屏幕@media(-webkit-min-device-pixel-ratio:2),(min-resolution:300dpi){指定高分辨率屏幕设备header{background-image:url(header-highres.png);}}@media(-webkit-max-device-pixel-ratio:1.5),(max-resolution:299dpi){指定低分辨率屏...

js判断浏览器内核如果是ie弹出提示非ie不进行任何操作

如上做一个弹出框针对ie兼容//获取IE版本functionIEVersion(){//取得浏览器的userAgent字符串varuserAgent=navigator.userAgent;//判断是否为小于IE11的浏览器varisLessIE11=userAgent.indexOf('compatible')>-1&&userAgent.indexOf('MSIE')>-1;//判断是否为IE的Edge浏览器varisEdge=userAgent.indexOf('Edge')>-1&&!isLessIE11;//判断是否为IE11浏览器varisIE11=userAgent.indexOf('Trident')>-1&&userAgent.indexOf('rv:11.0')>-1;if(isLessIE11){varIEReg=newRegExp('MSIE(\d+\.\d+);');//正则表达式匹配浏览器的userAgent字符串中MSIE后的数字部分,,这一步不可省略!!!IEReg.test(...

eclipse如何调试jar包源码

深入学习开源代码很多时候都需要去调试别人的jar包。当然如果你能拿别人的源码搭一个项目运行起来这样式不需要再去调试jar文件了,但是这样费时又费力。而且到最后也不一定能正常运行起来。接下来将介绍如果debug源码。这里以调试项目中搭好的springmvc框架中的DispatcherServlet为例,一次讲解如何debug进入这个类的方法。下载对应框架版本的src源码,我这里是spring3.2.4。把源码引入jar文件中。a、找到DispatcherServlet的class文件所属的jar文件,这里是spring-webmvc-3.2.4.RELEASE.jsr。b、选中项目右键如下图:c、在Libraries下找到jar文件,选中Sourceattachment,点击Edit按钮d、在sourceattachment中点击“引入文件夹”按钮,选中jar文件对应的文件夹e、点击OK,即可在sourceattachment中看到引入的源码文件夹,点击OK。进入调试。*重启eclipse*,进入DispatcherServlet类设置好断点,debug启动项目,然后访问断点。接下来,我...

Flask实战-留言板-使用Flask-DebugToolbar调试程序、Flask配置的两种组织形式 --

使用Flask-DebugToolbar调试程序扩展Flask-DebugToolbar提供了一系列调试功能,可以用来查看请求的SQL语句、配置选项、资源加载情况等信息。这些信息在开发时会非常有用。首先使用pipenv安装Flask-DebugToolbar及其依赖:  然后实例化扩展提供的DebugToolExtension类,传入程序实例APP,以完成扩展的初始化: fromflaskimmportFlaskfromflask_debugtoolbarimportDebugToolbarExtensionapp=Flask(__name__)toobar=DebugToolbarExtension(app) 开发时不需要也不建议使用Flask-DebugToolbar。Flask-DebugToolbar只在开启了调试模式时才会启动,所以我们要确保设置正确的FLASK_ENV环境变量值:开发时设为development;部署时则设为production。另外,Flask-DebugToolbar会拦截重定向请求,将DEBUG_TB_INTER...

STM32 USART调试笔记

硬件环境:STM32f103IDE:MDK固件库:3.5实现功能:串口接收一串字符串放入定义的缓冲区。当空闲终端发生时,去除字符串中的关键字。前期遇到问题:1.接收到的数据再RXNE中断中,逐个存取数组中。再次访问数组时。数组中的数据不见了,并且Rev_Num与实际发送到的字符串个数并不符合。需要连续发送多次,才能正确接收。之后buf[]内的数据又被清除。(没有在其他程序中处理这个数组)代码如下:charRev[250]={0};//数据缓存区u16RX_Num=0;chartemp;charbuf[500];voidUSART1_IRQHandler(void){charx;if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)!=RESET){USART_ClearFlag(USART2,USART_FLAG_ORE);x=USART_ReceiveData(USART1);}if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET){USART_ClearITPendingBit(USART1,USAR...
代码星球 代码星球·2021-02-03

GDB core命令的使用调试段错误

#include<stdio.h>voidfunc(){int*p=NULL;printf("*p:%d",*p);//断错误}intmain(void){func();return0;}   1.首先设置开关设置core文件的大小为1000K存放数据[oracle@xweb1clession]$ulimit-c0[oracle@xweb1clession]$ulimit-c10002.编译-g调试程序如下gcc-g-obin/gdb_coresrc/gdb_core.c [oracle@xweb1clession]$bin/gdb_core段错误(coredumped) coredumped核心已转存3.利用gdb定位断错误的位置命令行如下:gdb可执行文件core文件[oracle@xweb1clession]$gdbbin/gdb_corecore.157004.查看错误直接定位到了第4行有错误...

Mongoose开启调试模式格式化输出

Mongoose是MongoDB的一个对象模型工具,是基于node-mongodb-native开发的MongoDBnodejs驱动调试模式:  查看mongoose模块对mongodb操作的日志  更好的了解和优化对mongodb的操作varmongoose=require("mongoose");mongoose.set('debug',true);vardb=mongoose.connect("mongodb://127.0.0.1:27017/abc");db.connection.on("error",function(error){console.log("数据库连接失败:"+error);});db.connection.on("open",function(){console.log("数据库连接成功");});输出Mongoose:goods.createIndex({goodid:1},{background:true})Mongoose:goods.find({goodid:{'$in':['123456']}},{projection:{}})设置颜色且格式化输...

nodejs调试工具 node-inspect

1.安装npminstall-gnode-inspect2.chrome设置chrome://flags/#enable-devtools-experiments3.测试测试代码main.js//main.jsconsole.log('HelloWorld.');varparams={"id":1,"name":"abc","child":[{"id":1,"name":"aa"},{"id":2,"name":"bb"},{"id":3,"name":"cc"}]};console.log(params);  执行命令node-inspectmain.js  进入debug模式后  可以通过一些命令来设置断点、取消断点以及控制程序执行流程命令功能run执行脚本,在第一行暂停restart重新执行脚本cont,c继续执行,直到遇到下一个断点next,n单步执行step,s单步执行并进入函数out,o从函数中步出setBreakpoint(),sb()当前行设置断点setBreakpoint(‘f()’),sb(…)在函数f的第一行设置断点setBreakpoint(‘script.js...

Node 脚本的调试工具

2016年,Node决定将Chrome浏览器的"开发者工具"作为官方的调试工具,使得Node脚本也可以使用图形界面调试1.准备  创建目录D:odejs>mkdirtestD:odejs>cdtest  生成package.json文件D:odejsest>npminit-yWrotetoD:odejsestpackage.json:{"name":"test","version":"1.0.0","description":"","main":"index.js","scripts":{"test":"echo"Error:notestspecified"&&exit1"},"keywords":[],"author":"","license":"ISC"}  安装 Koa 框架和koa-route模块D:odejsest>npminstall--savekoakoa-routenpmnoticecreatedalockfileaspackage-lock.json.Youshouldcommitthisfile.npmWA...
代码星球 代码星球·2021-02-01

VS 2015main函数带参数的调试

最近学习pcl,学习C++,今天让main的参数接收数据,想起没用过这样的,不知道怎么在vs里面调试因此找了下方法,并记录下来代码#include<iostream>intmain(intargc,char**argv){std::cout<<"参数数量为:"<<argc<<std::endl;for(inti=0;i<argc;i++){std::cout<<argv[i]<<std::endl;}system("pause");return0;} 右键项目—》属性—》调试—》命令参数运行结果 ...

使用 weinre 远程调试移动端页面

1.安装nodejs以及npm2.安装weinre  npm-ginstallweinre3.使用  (1)weinre--boundHost[IP_address]--httpPort[port]     默认端口是8080   (2)在浏览器上打开网址    如192.168.5.239:1234  (3)测试:    A.打开TargetDemos下面的页面,从手机端打开,确保电脑和手机在同一个局域网    B.AccessPoints的debug,进入调试界面  (4)复制taregtscript到要调试的界面,就可以像(3)测试那样调试了 注:  npm安装的时候进度条不动,直接先切换淘宝源npmconfigsetregistryhttp://registry.npm.taobao.org/   ...

使用curl来调试你的应用

我们在客户端开发过程中总免不了和后端进行api对接,有时候需要对返回的数据格式进行调试,有时候每次运行客户端来发送请求,这个未免效率太低,这里就来介绍一个好用的工具--curl。curl是一个向服务器传输数据的工具,它支持http、https、ftp、ftps、scp、sftp、tftp、telnet等协议,这里只针对http进行讲解一些常用的用法,具体安装请自行搜索。curlhttp://www.baidu.com接着你就会看到百度的页面源代码输出。如果要把这个网页保存下来,可以这样:curlhttp://www.baidu.com>/tmp/baidu.html你会看到一条进度条,然后源码就被重定向到了/tmp/baidu.html。或者:curl-o/tmp/baidu.htmlhttp://www.baidu.com默认直接请求一个url就是发出一个get请求,参数的话直接拼接在url里就好了,如curlhttp://www.baidu.com/s?wd=curl上述请求会上百度发起一条查询请求,参数是wd=urlcurl-d"name=test&page=1"h...

Android 调试工具集【转】

1.TraceView1)功能:用于热点分析和性能优化,分析每个函数占用的CPU时间,调用次数,函数调用关系等 2)方法:  a)在程序代码中加入追踪开关  importandroid.os.Debug;  ……  android.os.Debug.startMethodTracing(“/data/tmp/test”);//先建/data/tmp目录  ……//被追踪的程序段  android.os.Debug.stopMethodTracing();  b)编译,运行后,设备端生成/data/tmp/test.trace文件  c)把trace文件复制到PC端  $adbpull/data/tmp/test.trace./  d)使用android自带工具分析trace文件  $ANDROID_SRC/out/host/linux-x86/bin/traceviewtest.trace  此时可看到各个函数被调用的次数CPU占用率等信息  e)使用android自带工具分析生成调用关系类图  $apt-getinstallgraphviz#安装图片相关软件  $ANDROID_SR...
代码星球 代码星球·2021-01-31
首页上一页...89101112...下一页尾页