断点

GDB十分钟教程

纵饮孤独 提交于 2019-12-03 22:07:21
GDB十分钟教程 作者: liigo 原文链接: http://blog.csdn.net/liigo/archive/2006/01/17/582231.aspx 日期: 2006年1月16日 本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程序员朋友,以及程序爱好者。 GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。 命令 解释 示例 file <文件名> 加载被调试的可执行程序文件。 因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。 (gdb) file gdb-sample r Run的简写,运行被调试的程序。 如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。 (gdb) r c Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。 (gdb) c b <行号> b <函数名称> b *<函数名称> b *<代码地址> d [编号] b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。 其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”

Netty源码剖析-启动服务

旧时模样 提交于 2019-12-03 20:36:59
参考文献:极客时间傅健老师的《Netty源码剖析与实战》Talk is cheap.show me the code! --1主线分两步:    一:首先在our thread里,如果写在main方法中则就是main thread; ①:创建selector; ②:创建server socket channel; ③:初始化server socket channel; ④:给server socket channel 从 boss group中选择一个NioEventLoop;    二:boss thread: ⑤:将server socket channel注册到选择的NioEventLoop的selector(上一步创建的selector) ⑥:绑定地址启动 ⑦:注册接收连接事件(OP_ACCEPT)到selector上 --2源码演示:    首先在代码启动的地方加断点,并且在NioEventLoop.java中的openSelector()上也加一个断点(用于验证selector什么时候被创建),如下图: Debug启动后会进入上图第一个断点,放行后进入openSelector()的这个断点上,通过观察Frames区域可以发现selector是在刚才第一个断点的时候就被创建了, 即“EventLoopGroup bossGroup = new

敲代码的一些技巧性总结

不羁岁月 提交于 2019-12-03 20:29:50
1. python 里面的方法 help() 里面可以加你不懂的名词 会给出详细的解释 dir() 会给出它的所有 魔法方法,属性,方法 就是类里面的所有 def python shell 中常用的方法: ctrl+d 退出shell --> Y/y <==>exit() dir(q) objects 是管理器 count,create, get,filter 都是管理器里面的方法 Querset 查询集. 2. 断点 breakpoint() n next 执行下一行代码 p print 输出 dir(xxx) 输出xxxx 的所有属性,方法 c continue 继续: 代码继续 断点状态就退出了. list 3. 命令结构 django-admin startproject mysite 结构: 命令 子命令 参数 所有的命令都有 --help django-admin --help python manage.py startapp helloworld 解析器 命令 子命令 参数 breakpoint() 断点 断点里面还有 dir() 会列出所有的属性和方法. 来源: https://www.cnblogs.com/ma-ming/p/11807163.html

调试webpack

﹥>﹥吖頭↗ 提交于 2019-12-03 20:12:25
调试webpack 1. 摘要 用过构建工具webpack的朋友应该都体会,面对其几百行的配置内容如大海一小舟,找不到边。看文档查百度,对其构建的生命周期看了又看。最终还是很茫然。原因很简单,构建配置一般都是通过脚手架工具自动生成。看似每天在用,其实接触很少。直到有一天,发现社区的插件不能满足需求时,相信你一定会定制一个自己的插件。这时你需要彻底了解它的机制,作为开发,调试代码一定是了解内部逻辑最好的方法。 原文公众号地址 不管是 npm 还是 webpack 都是基于nodejs的工具。所以最终是调试node。这里我介绍三种调试的方法。需要提前准备好以下工具 vscode google chrome npm i -D webpack webpack-cli 添加webpack配置文件,并在其中使用 debugger 设置一个断点。 const path = require('path'); debugger; module.exports = { mode: 'development', entry: './src/index.js', output: { path: path.resolve(__dirname, 'dist'), filename: "index.js" } }; 2. (方法一)使用vscode运行npm调试 在新建项目的package.json文件

Google Chrome调试js代码

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-03 17:59:53
你是怎么调试 JavaScript 程序的?最原始的方法是用 alert() 在页面上打印内容,稍微改进一点的方法是用 console.log() 在 JavaScript 控制台上输出内容。嗯~,用这两种土办法确实解决了很多小型 JavaScript 脚本的调试问题。不过放着 Chrome 中功能越发强大的开发者工具不用实在太可惜了。本文主要介绍其中的 JavaScript 断点设置 和 调试 功能,也就是其中的 Sources Panel(以前叫 Scripts)。如果你精通 Eclipse 中的各种 Java 调试技巧,那么这里的概念都是类似。写作本文时使用的 Chrome 版本为 25.0.1364.172。 基本环境 Sources Panel 的左边是内容源,包括页面中的各种资源。其中,又分 Sources 和 Content scripts。Sources 就是页面本身包含的各种资源,它是按照页面中出现的域来组织的,这是我们要关注的。异步加载的 js 文件,在加载后也会出现在这里的。 Content scripts 是 Chrome 的一种扩展程序,它是按照扩展的ID来组织的,这类扩展实际也是嵌入在页面中的资源,它们也可以读写DOM。编写、调试这类扩展的开发者才要关心它们,如果你的浏览器没安装任何扩展,那么 Content scripts 就看不到任何东西。

Mac

为君一笑 提交于 2019-12-03 16:57:10
强制退出应用/程序:按住 Command + Option + Shift + Esc 键一两秒Excel单元格内换行:control+option+enter 全屏/退出全屏:ctrl+command+F 快速打开Finder:鼠标点击空白处command+N 显示/隐藏 隐藏文件 shift+command+. 显示桌面:点击桌面空白处option+command+H Excel 单元格内换行:control+option+return (windows: Alt+Enter) 选择截图:command+shift+4;区域截图:command+shift+3 IntelliJ IDEA For Mac 快捷键 打开最近浏览类:command+E 根据官方pdf翻译: https://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard_Mac.pdf 在 IntelliJ IDEA 中有两个 Mac 版本的快捷键,一个叫做:Mac OS X,一个叫做:Mac OS X 10.5+ 目前都是用:Mac OS X 10.5+ 有两套的原因: https://intellij-support.jetbrains.com/hc/en-us/community/posts/206159109-Updated-Mac-OS-X

MTK模拟器调试指南

梦想与她 提交于 2019-12-03 16:09:35
前篇文章介绍了手机调试的TRACE技巧,MTK手机调试是比较简单的,除了打TRACE,找ASSERT,分析DUMP外,剩下的就是经验了,有经验的人看到现象就能猜到问题出在什么地方,简单看一下TRACE只是为了确认自己的猜测.初涉此道的朋友往往需要时间,慢慢积累经验.要达到熟练,就需要有空的时候多读多研究代码.熟练的掌握了代码,解决问题就会熟能生巧. MTK的模拟器调试说没技巧也是对的,说有技巧也不错.因为模拟器的技术与其说是MTK经验,不如说是VC经验. 由于模拟器能在没有样机的情况做大量的UI方面的开发,同时模拟器具有快捷,所见即所改等优点,因此,受到很多开发老手的青睐.熟练掌握模拟器使用技巧,对于提高工作效率,节省资源具有很积极的意义. 工欲善其事,必先利其器.欲了解模拟器调试,就要先了解VC使用.VC调试过程中经常使用的快捷键如下: vc++断点的使用:按F9(设置断点),F5调试,F10单步调试,shift+F5退出调试F10单语句执行,F11单指令执行,Ctrl+F10执行至光标处;F9按行设置/取消断点, Alt+F9可按行,按数据或按消息设置断点;调试时,按Alt+3打开跟踪窗口,Alt+4打开变量窗口,Alt+5打开寄存器窗口,Alt+6打开内存窗口,Alt+7打开堆栈窗口,Alt+8打开汇编指令窗口; 1.只要你有源代码,拥有一个模拟器是一件很容易的事.当然

Qt Creator 使用技巧

守給你的承諾、 提交于 2019-12-03 14:18:01
文章 由 flycarl 在 21 Dec 2010 创建 最后由 hamishwillee 在 13 Jun 2012 编辑 Contents 1 简介 2 代码浏览 2.1 定位器(locator) 3 代码编辑 4 断点调试 5 平台管理 6 项目管理 6.1 编译参数(Build) 6.2 运行参数(Run) 7 相关链接 简介 Qt Creator 作为Qt 开发的IDE,支持Qt 开发,及QML开发,能很好的发挥Qt 跨平台的特点,这里列举一些Qt Creator的使用技巧, Qt Creator使用可参看视频:Qt Creator使用简介 代码浏览 在Edit view中很多快捷键,方便你定位到想要的代码。 F4 在头文件和代码之间切换 F2 在声明和实现之间切换 Ctrl + k 打开定位器(locator) Ctrl + Shift + f 打开全局搜索框 Ctrl + f 打开当前页面搜索框 Ctrl + 鼠标滚轮 缩放代码 定位器(locator) CreatorLocator.PNG 图:点击Ctrl + k 打开左下角的定位器,命令及功能记录在其中,无需记忆命令 在定位器中输入以下字符加空格,加你想查找的关键字,能在代码中快速定位,试一下。 p 查看当前项目的文件 c 查看类 m 查看方法 l 直接到选中的行号 ? 使用帮助中的index 视频演示请看

java实现视频断点上传文件

走远了吗. 提交于 2019-12-03 14:13:28
一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。 HTTP协议本身不支持断点上传,需要自己实现。 二、Range 用于请求头中,指定第一个字节的位置和最后一个字节的位置,一般格式: Range:用于客户端到服务端的请求,可以通过改字段指定下载文件的某一段大小及其单位,字节偏移从0开始。典型格式: Ranges: (unit=first byte pos)-[last byte pos] Ranges: bytes=4000- 下载从第4000字节开始到文件结束部分 Ranges: bytes=0~N 下载第0-N字节范围的内容 Ranges: bytes=M-N 下载第M-N字节范围的内容 Ranges: bytes=-N 下载最后N字节内容 1.以下几点需要注意: (1)这个数据区间是个闭合区间,起始值是0,所以“Range: bytes=0-1”这样一个请求实际上是在请求开头的2个字节。 (2)“Range: bytes=-200”,它不是表示请求文件开始位置的201个字节,而是表示要请求文件结尾处的200个字节。 (3)如果last byte pos小于first byte pos

linux下使用gdb对php源码调试

守給你的承諾、 提交于 2019-12-03 13:53:42
title: linux下使用gdb对php源码调试 date: 2018-02-11 17:59:08 tags: --- linux下使用gdb进行php调试 调试了一些php的漏洞,记录一下大概的过程 安装编译php sudo apt-get install -y autoconf libtool re2c libxml2-dev openssl libcurl4-openssl-dev libbz2-dev libjpeg-dev libpng12-dev libfreetype6-dev libldap2-dev libmcrypt-dev libmysqlclient-dev libxslt1-dev libxt-dev libpcre3-dev libxpm-dev libt1-dev libgmp-dev libpspell-dev librecode-dev libreadline6-dev bison libtidy-dev sudo ln -s /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/ sudo ln -s /usr/lib/x86_64-linux-gnu/liblber.so /usr/lib/ sudo ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr