程序调试

从零学本体dApp开发(15):本体智能合约运行出错如何调试?

假如想象 提交于 2019-11-30 06:16:22
原创 | 工匠 (来自本体社区的技术人员) --------------- 写在前面 最近在利用业余时间学习本体的开发。我打算把自己学习的过程记录下来,一方面便于自己梳理学到的东西,另一方面希望可以通过笔记的共享,能使本体后来的开发者少走弯路。 由于是初学者,学习本体开发的过程中遇到了很多问题,在此,特别感谢本体社区的各位老师(宏雷、楚笙、Mickey、雪飞的逆袭、Andy季、周佩文等)耐心地为我解答各种各样的问题,本体有你们,真好! 学习本篇的目的: 我们在调试智能合约的时候,虽然编译通过了,但是有时候运行结果不是我们想要的,这时候我们就要通过一些手段来调试程序,SmartX为我们提供了非常便利的调试工具。 目录: 1. 调试功能简介 2. 查看虚拟机状态 3. 如何进行调试? 1.调试功能简介 调试时经常用到的工具如下图的红色字体处: 1.1 set break point 设置断点 默认点击“run”的时候,程序是全速执行的,我们可以通过设置断点,让程序停在那一步,方便查看变量的值,点击左侧的行数即可设置断点 1.2 step over 单行调试,如果被执行行是函数调用,则程序跳过函数的执行内容,直接运行到函数调用的下一行 1.3 step into 逐行调试,如果被调用行是函数调用,会跳入到被调用处继续执行 1.4 stop 点击“debug”后,程序开始运行后,

8个调试js代码的console方法【4#最实用】

老子叫甜甜 提交于 2019-11-30 06:08:43
每个JavaScript开发者都用过 console.log() 来调试程序,但实际上Console对象还提供了很多其他方法可以提高调试效率。本文将介绍8个有趣的Console方法,即使JavaScript老手也不一定知道! 1、console.assert ✅ 学编程,上 汇智网 ,在线编程环境,一对一助教指导。 console.assert 用来测试传入的参数是true还是false。当传入的值为false时,该函数将输出第一个参数后的额外参数,否则不输出任何日志。 当你希望检查值是否存在并且希望避免控制台输出太多信息时, assert 方法非常有用。 2、console.count and console.countReset 💯 这两个方法用来设置/复位特定字符串的日志输出计数器: 3、console.group and console.groupEnd 🎳 这两个方法用来管理控制台日志的分组。 .group() 方法的第一个参数用来声明一个标签,后续的日志自动缩进已展示分组。 .groupEnd() 则结束分组日志的缩进: 4、console.table 📋 学编程,上 汇智网 ,在线编程环境,一对一助教指导。 table() 方法用表格显示对象或数组内容,非常有用: console.table 使得查看嵌套的复杂对象或数组的内容不那么困难了。 5、console

JavaScript调试必会的8个console方法

两盒软妹~` 提交于 2019-11-30 06:07:11
每个JavaScript开发者都用过 console.log() 来调试程序,但实际上Console对象还提供了很多其他方法可以提高调试效率。本文将介绍8个有趣的Console方法,即使JavaScript老手也不一定知道! 1、console.assert ✅ 学编程,上 汇智网 ,在线编程环境,一对一助教指导。 console.assert 用来测试传入的参数是true还是false。当传入的值为false时,该函数将输出第一个参数后的额外参数,否则不输出任何日志。 当你希望检查值是否存在并且希望避免控制台输出太多信息时, assert 方法非常有用。 2、console.count and console.countReset 💯 这两个方法用来设置/复位特定字符串的日志输出计数器: 3、console.group and console.groupEnd 🎳 这两个方法用来管理控制台日志的分组。 .group() 方法的第一个参数用来声明一个标签,后续的日志自动缩进已展示分组。 .groupEnd() 则结束分组日志的缩进: 4、console.table 📋 学编程,上 汇智网 ,在线编程环境,一对一助教指导。 table() 方法用表格显示对象或数组内容,非常有用: console.table 使得查看嵌套的复杂对象或数组的内容不那么困难了。 5、console

Eclipse远程调试Tomcat

只愿长相守 提交于 2019-11-30 05:53:34
1. 应用场景 通过 Java 的 JPDA 远程调试功能 将本地源码与远程 部署的应用 连接起来实现调试,其中程序源码与服务器上发布的编译代码版本要保持一致,保证调试定位准确。调试的过程中, 部署 在应用服务器上的应用处于 DEBUGE 模式。 2. Tomacat 配置 2.1. JPDA 参数 JPDA 为 Java 平台上的调试器定义了一个标准的体系结构。默认情况下, JVM 并没有启用 JPDA 。需要在启动 JVM 的命令行加载以下参数: -Xdebug -Xrunjdwp:transport=dt_socket, address=8000,server=y,suspend=y 。 -Xdebug 启用调试特性 -Xrunjdwp 启用JDWP实现,它包含若干子选项: transport=dt_socket JPDA front-end和back-end之间的传输方法。dt_socket表示使用套接字传输。 address=8000 JVM在8000端口上监听请求。 server=y y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。 suspend=y y表示启动的JVM会暂停等待,直到调试器连接上。suspend=y这个选项很重要。如果 你想从Tomcat启动的一开始就进行调试,那么就必须设置suspend=y。 2.2. 配置方式一 打开

Eclipse替代ndk-gdb断点调试Android NDK程序

可紊 提交于 2019-11-30 04:52:19
一 概述: Eclipse调试NDK程序的操作并不难,难的是环境的搭建。光是安装Eclipse就有不少问题,真是“大错不犯,小过不断”不胜期烦。在网上,已经有先行者记录下了Eclipse断点调试Android NDK程序的方法: 《Eclipse + ADT(包括NDK Plugin) + CDT 搭建Android NDK开发环境》 网址: http://blog.sina.com.cn/s/blog_48ed03c80101nhei.html 我遇到的情况与上文有些不同,上文开篇就说“Android应用程序的开发环境比较容易搭建”,但我在开发环境搭建时已经遇到问题了。光是Eclipse我就反复安装了三次。我遇到了很多上文没有提及的问题,可能是因为所在的平台不同的原因吧(我在MAC上搭的)。下面我将着重说明那些上文没有的内容。为求文章的连贯性,文本也会简要的提及一些上文已经有的重要内容,不过只作蜻蜓点水式的介绍,所以我也建议大家看看上文。 二 功能要求描述 *(Mac)OS X Yosemite 版本 10.10.2 * Android SDK + android-ndk-r10e + ant + Eclipse + CDT + ADT 可以在Eclipse编写及调试NDK程序(断点调试)。效果图如下: 三 实现方法 3.1 环境搭建遇到问题的解决方法 3.1.1 Android

php的xdebug的配置、调试、跟踪、调优、分析

烈酒焚心 提交于 2019-11-30 03:49:56
xdebug 的 profiler 是一个强大的工具,它能分析 PHP 代码,探测瓶颈,或者通常意义上来说查看哪部分代码运行缓慢以及可以使用速度提升。Xdebug 2 分析器输出一种兼容 cachegrind 文件格式的分析信息。这允许你能使用出色的 KCacheGrind 工具(Linux,KDE)来分析你的 profiling 数据。在 Linux 可以使用你最喜欢的包管理器安装 KCacheGrind。 在 windows 系统上,有预编译的 QCacheGrind 二进制程序(QCacheGrind 是没有 KDE 绑定的 KCacheGrind)。 在 Mac OSX 系统上,这里也有怎样安装 QCacheGrind 的 说明 。 Windows 用户可以选择性的使用 WinCacheGrind 。它的功能不同于 KCacheGrind,所以 这个页面的 KCacheGrind 使用文档章节不适用于这个程序。WinCacheGrind 目前不支持 Xdebug 2.3 引入的 cachegrind 文件格式的的文件和函数压缩。 这也有一种可替代 profile 信息演示的工具叫做 xdebugtoolkit 。一款基于 web 前端叫做 Webgrind ,和一款基于 java 的工具叫做 XCallGraph 。 如果你不能使用 KDE(或者不想使用 KDE)的

iOS真机调试 for Xcode 5

给你一囗甜甜゛ 提交于 2019-11-30 03:32:54
由于 Xcode5 的到来,关于iOS软件进行真机调试方面,有了一些变化,苹果在Xcode 5中修改了一些规则,一方面是阻止以往破解的方式进行调试(免证书).另一方面是添加了自动生成证书的功能特性,来加快 我们开发者生成一些调试用的证书.免去我们频繁要去苹果开发者网站自己生成. 接下来就介绍一下如何在Xcode5中 进行真机调试. 一、真机调试所需材料说明 在申请真机调试证书之前,先对苹果真机调试所需的文件进行说明: 苹果真机调试需要 证书(Certificates) 和 描述文件(Provisoning Profiles) 1、证书(Certificates) 通过苹果自带的钥匙串生成后上传到Developer中再生成来完成 2、描述文件(Provisoning Profiles) 生成描述文件时需要选择 App ID ( 包含Bundle,必须与你程序的bundle保持一致,为了能同时调试多个程序,一般bundle填写时末尾用*号代替,后文会具体说明) 选择 证书(Certificates) 及 设备(Devices) 三样东西 所以如果想要真机调试成功,就必须 App ID , 证书(Certificates) , 描述文件(Provisoning Profiles) , 设备 (Devices ) ,及你所要调试程序的 Bundle Identifier 保持一致 二

#转载备忘# Linux程序调试工具

空扰寡人 提交于 2019-11-30 02:55:08
Ref: https://linuxtools-rst.readthedocs.io/zh_CN/latest/advance/02_program_debug.html 2. 程序调试 目录 程序调试 进程调试 gdb 程序交互调试 pstack 跟踪栈空间 strace 分析系统调用 目标文件分析 nm objdump readelf size 查看程序内存占用 file 文件类型查询 strings 查询数据中的文本信息 fuser 显示文件使用者 xxd 十六进制显示数据 od 2.1. 进程调试 gdb 程序交互调试 GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c++程序员,gdb是必不可少的工具; GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。 以下从一个完整的调试过程简单说明最基本的几个命令; $gdb programmer # 启动gdb >break main # 设置断点 >run # 运行调试程序 >next # 单步调试 >print var1 # 在调试过程中,我们需要查看当前某个变量值的时候,使用print 命令打印该值 >list # 显示当前调试处的源代码 >info b # 显示当前断点设置情况

Linux调试工具——GDB

拈花ヽ惹草 提交于 2019-11-30 00:59:03
GDB是UNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。所谓“尺有所短,寸有所长”就是这个道理。 为了使用GDB进行Linux下程序的调试,gdb调试前,需用gcc生成对应的包含调试信息的可执行文件 选项:-g gcc -g myapp.c -o myapp 注:加入调试信息的可执行文件比普通可执行文件大很多。 一、进入gdb调试模式及内部操作 (1)l:列出源文件 l 默认不加文件名列出包含main函数的文件 l insert_into.c:20 指定显示文件中的第20行 l insert_into.c:select_sort 列出insert_into.c中的select_sort函数,默认每次显示10行,想看见后面的直接enter(enter值默认按上条命令继续执行) (2)打断点:break 22(注意:break可以简写为b) 有特殊需求时,设置条件断点:b 22 if i==0 (条件断点在for循环中,仅在循环内部停止,不在for条件处执行) (3)help:查看gdb帮助 (4) 查看断点信息:info break (i b) 查看变量编号:info

Python调试器,快速定位各种疑难杂症

和自甴很熟 提交于 2019-11-30 00:58:33
现在很多的编辑器其实都带着「调试程序」的功能,比如写 c/c++ 的 codeblocks,写 Python 的 pycharm,这种图形界面的使用和显示都相当友好,简单方便易学,这个不是我这篇文章要讲的重点。今天主要是想给大家介绍一下 「 Python调试器 」,快速定位各种疑难杂症。 Python 调试器 这一部分主要就是想说两个 Python 调试器,分别是标准库自带的 pdb 和开源的 ipdb。 pdb pdb 是 Python 自带的库,为 Python 提供了一种交互式的源码调试功能,包含当前调试器应有的功能,包括设置断点、单步调试、查看源码等。其实如果你之前学过 c/c++ 的话,你可能知道 gdb 这个命令行调试工具,如果你之前用过 gdb,那么恭喜你你可以直接用 pdb 了,因为这哥俩一个用法。如果你不知道 gdb 也没事,我们先来看一下 pdb 的部分调试命令: 这里有两种不同的方法来启动 Python 调试器,两种方法适用于不同的场景。一种是直接在命令行参数指定使用 pdb 模块启动 Python 文件, 这种适合于代码文件较短的情况 ,将在代码的第一行启动 Python 调试器。具体如下所示(例如文件名是 test.py): python -m pdb test.py 另一种是在 Python 代码中调用 pdb 模块的 set_trace