程序调试

深入浅出Node.js

梦想的初衷 提交于 2019-12-04 04:36:24
深入浅出Node.js 一直想致力于写一篇关于广义讲解Node.js系统的文章,苦于时间有限,资源有限。这篇文章是在结合自己的学习心得以及与行业大佬共同探讨下争对于熟练掌握JS语言后的广义Node.js.至于为什么叫作广义在后文会提到。希望看到这篇文章后可以激发大家对Node.js的学习兴趣,这篇文章的初衷就是致力于帮助大家可以走进Node.js世界。 简介: Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非 常好。 底层选择用c++和v8来实现的 注意:广义的Node.js是指不掌握以底层C++技术以及V8知识,利用Node.js运行在服务端的JS特性完成操作,很多小伙伴会产生疑惑Node.js是什么,简单的来说:Node.js是解析器. 优势: RESTful API 这是NodeJS最理想的应用场景,可以处理数万条连接,本身没有太多的逻辑,只需要请求API,组织数据进行返回即可。它本质上只是从某个数据库中查找一些值并将它们组成一个响应。由于响应是少量文本,入站请求也是少量的文本,因此流量不高

mstar gdb调试

放肆的年华 提交于 2019-12-04 00:02:05
当进程崩溃出现coredump提示时,可以利用gdb来定位出错函数。 首先,把core_dump.XXX.gz文件从设备上拷贝出来,放到编译环境下,另外,还要把代码目录下的symbols文件夹也拷贝到编译环境下,因为程序用到很多库,很多时候出错是在库函数里,所以一定要拷贝当前编译时产生的symbols文件夹,android一般在out/target/product/下,Supernova一般在projects/目录下。 先解压core_dump.XXX.gz文件,然后用gbd命令调试它,如下命令: /opt/toolchain/mstar/arm-2012.09/bin/arm-none-linux-gnueabi-gdb -core core_dump.1029/Coredump.gz /opt/toolchain/mstar/arm-2012.09/bin/arm-none-linux-gnueabi-gdb就是刚才找到的命令工具,-c或-core是指调试core文件,后面是文件路径。回车后,弹出的命令行(gdb)就是调试命令行了。 (gdb) backtrace命令是查看当前线程函数栈回溯,简写是bt。 如果bt后都是问号,看不到函数名,说明运行到动态库里出错了。 用file命令载入调试的文件,假如提示是由/applications/bin/tvos产生的core

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代码处”

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 就看不到任何东西。

如何使用dump文件进行调试

醉酒当歌 提交于 2019-12-03 17:29:38
1 简介 第一次遇到程序崩溃的问题,之前为单位开发了一个插件程序,在本机运行没有出现问题,但把生成的可执行文件拷贝到服务器上一运行程序,刚进入插件代码,插件服务就崩溃了,当时被这个问题整的很惨,在同事的帮助下了解到,对于程序崩溃,最快的解决方式是生成dump文件,通过生成dump文件使用调试工具进行调试,还原程序崩溃时的状态,能够起到快速定位排查问题的作用。Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中。Dump文件是用来给驱动程序编写人员调试驱动程序用的,这种文件必须用专用工具软件打开,比如使用WinDbg、VS打开。因为第一次遇到此类问题,完全没有头绪,但同事很快通过dump文件很快定位到空指针问题,秉承着遇到的问题在遇到第二次不能再是问题的原则,对dump文件的含义、生成、作用、分析、定位排查的过程进行说明,算是对遇到的程序崩溃的问题总结。 本文档适用于开发人员。 2 Dump文件的含义和作用 2.1 Dump文件的类型 Windows下Dump文件分为两大类,内核模式Dump和用户模式Dump。内核模式Dump是操作系统创建的崩溃转储,最经典的就是系统蓝屏,这时候会自动创建内核模式的Dump。用户模式Dump进一步可以分为完整Dump(Full Dump)和迷你Dump(Minidump)。完整Dump包含了某个进程完整的地址空间数据

真机调试/程序发布

情到浓时终转凉″ 提交于 2019-12-03 16:39:37
开发者账号分类 个人的 99$ 申请简单,付钱就行,688人民币 企业的 99$ 申请复杂,需要“邓白氏”认证,可以确认企业是合法有效的 可以管理团队开发 商业的 299$ 也需要邓白氏认证,开发的应用,不能够上架(不经过苹果的审核)!专门给企业级用户定制应用程序使用! 开发者账号购买 1.注册Apple Id 2.申请加入开发者 3.利用信用卡付费 4.购买成功 5.详见附件 真机调试 真机调试的主要步骤 登录开发者主页 生成cer证书:cer是一个跟电脑相关联的证书文件,让电脑具备真机调试的功能 添加App ID:调试哪些app? 注册真机设备:哪台设备需要做真机调试? 生成MobileProvision文件:结合2、3、4生成一个手机规定文件 导入cer、MobileProvision文件 最终会得到2个文件 Cer文件:让电脑具备真机调试的功能 MobileProvision文件:哪台设备、哪些app、哪台电脑需要做真机调试? 真机调试的步骤01-登录开发者主页 登录开发者主页 https://developer.apple.com/membercenter/index.action 管理证书(前提:得花99$或299$加入开发者计划) 真机调试的步骤02-生成cer证书 真机调试的步骤03-添加App ID 真机调试的步骤04-注册真机设备 真机调试的步骤05

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.只要你有源代码,拥有一个模拟器是一件很容易的事.当然

用户异常与模拟异常的派发

我是研究僧i 提交于 2019-12-03 13:43:06
Windows内核分析索引目录 :https://www.cnblogs.com/onetrainee/p/11675224.html 用户异常与模拟异常的派发 一、 KiDispatchException 函数处理流程图   无论用户模拟异常还是CPU异常,经过前面分析,在经过记录之后,最终都会经过KiDispatchException这个派发函数中。   在KiDispatchException中会对CPU异常和用户异常分别进行处理。   CPU异常:首先调用内核调试器,如果调用失败则调用RtlDispatchException(该函数后面会有介绍)分发,        RtlDispatchException 函数会检查SEH链中是否有该程序的处理函数,如果有则返回成功,       若 RtlDispatchException 函数 处理异常失败,其会尝试第二次调用内核调试器进行调试处理,如果最终处理不了直接蓝屏。   用户异常:先尝试内核调试器,再尝试用户调试器,如果还不行,直接返回用户代码尝试使用try_catch_语法来进行处理,之后还不行再尝试两次用户调试器。       如果最终还是处理不了异常,该进程会关闭并报出错误。(用户异常不会导致蓝屏出现) 二、RtlDispatchException的函数解析代码 1 VOID 2 KiDispatchException

vscode调试npm包技巧

廉价感情. 提交于 2019-12-03 13:27:03
官网文档: https://code.visualstudio.com/docs/nodejs/nodejs-debugging nodet调试方法(日志和debuuger): https://blog.risingstack.com/how-to-debug-nodej-js-with-the-best-tools-available/ https://segmentfault.com/a/1190000014664764 https://www.jianshu.com/p/8b034954abc9 (1)调试npm包非script执行,调试vue-cli配置如下 launch.json { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "node", //类型 "request": "launch", //有lanch和attach两种 "name": "Launch via NPM", "runtimeExecutable": "node", "args": ["${workspaceRoot}\\node

vscode调试JavaScript代码

天涯浪子 提交于 2019-12-03 11:35:40
在调试JavaScript代码时,有两种比较简单的方法。 1.使用Chrome等浏览器调试 2.在vscode配置JavaScript运行环境 本文主要介绍第二种方法 配置步骤: 1.下载并安装Node.js(Node.js是JavaScript的一个运行环境) 这个在Node.js官网或者中文网都可以找到 2.配置vscode 点击vscode中“调试”按钮,打开launch.json文件(或者使用Ctrl+Shift+P输入launch.json) 在里面添加 "version": "0.2.0", "configurations": [{ "name": "Launch", "type": "node", "request": "launch", "program": "${workspaceRoot}/1.js", "stopOnEntry": false, "args": [], "cwd": "${workspaceRoot}", "runtimeExecutable": null, "runtimeArgs": ["--nolazy"], "env": { "NODE_ENV": "development" }, "externalConsole": false, "preLaunchTask": "", "sourceMaps": false, "outDir":