程序调试

Debug调试

匿名 (未验证) 提交于 2019-12-02 23:26:52
  调试是查找、解决软件中逻辑错误代码(称为bug:软件臭虫)的重要手段,是软件开发中必不可少的环节调试也是学习、研究其他人编写的代码的一个很好的手段。 Eclipse提供了强大的代码调试功能-Debug,通过Debug视图能快速定位代码中的逻辑错误,提高软件开发效率。 Eclipse中:   点击 Debug 按钮(Run 按钮的左边)   会弹出一个窗口,询问是否进入 Debug视图模式,点击 Yes 进入   左上角显示当前程序中线程运行的状态,右上角是变量观察窗口, 中间区域是代码编辑区,中右方是大纲视图,下方是控制台   右上角会出现标签 Java EE、Java、Debug,如果没有 Debug,可以点击 Open Perspective 按钮,选择 Debug,点击 OK,就会出现了(因为是 Java EE 版本的Eclipse,所以有 Java EE 标签)   点击标签可以在Java视图、Debug视图之间快速切换       断点:   断点是在源代码的可执行部分的指定行设置一个标志,在调试运行方式下,程序运行到该断点标志处会自动暂停,等待下一步操作。通过设置断点可以快速执行断点之前的代码,然后在断点处暂停,这时可以换单个命令运行的方式来运行程序,查找程序中的逻辑错误。断点设置的位置应该是程序员怀疑错误代码的附近位置,即对出错位置的定性分析,是一个大概的位置

一种绕过PTRACE反调试的办法

匿名 (未验证) 提交于 2019-12-02 22:56:40
Linux 系统gdb等调试器,都是通过ptrace系统调用实现。Android加固中,ptrace自身防止调试器附加是一种常用的反调试手段。 调试时一般需要手工在ptrace处下断点,通过修改ptrace返回值过掉反调试。下面提供另一种思路,降低手工操作复杂度: 测试代码(反调试程序): #include <stdio.h> #include <stdlib.h> #include <sys/ptrace.h> void a() { if (ptrace(PTRACE_TRACEME, 0, 1, 0) == -1) { printf("don't trace me !!\n"); exit(1); } // normal execution puts("hello girl."); } int main() { a(); return 0; } 编写辅助库: /* Type of the REQUEST argument to `ptrace.' */ enum __ptrace_request { PTRACE_TRACEME = 0, #define PT_TRACE_ME PTRACE_TRACEME }; long ptrace(enum __ptrace_request request, unsigned long pid, void *addr, void

简单的操作vs编译器调试代码

匿名 (未验证) 提交于 2019-12-02 22:56:40
调试的基本步骤: 发现程序的错误所在。 以隔离,消除错误等方式对错误进行定位。 确定错误产生原因。 提出纠正错误的解决办法。 对程序错误给予改正,重新测试。 1.调试环境准备 2.查看生产调试窗口 熟悉部分快捷键: 快捷键 功能 F5 启动调试 Ctrl+F5 开始执行(不调试) shift+F5 停止调试 F11 逐语句 F10 逐过程 Ctrl+shift+B 生成解决方案 Ctrl+Alt+W,1 生成监视窗口1 Ctrl+Alt+M,1 转到内存窗口1 Ctrl+Alt+C 调用栈堆 Ctrl+Alt+D 转到反汇编 Ctrl+Alt+G 转到寄存器 3.打开监视窗口 4.查看内存信息 5.查看调用堆栈 6.转到反汇编 7.查看寄存器信息 文章来源: 简单的操作vs编译器调试代码

GDB使用

匿名 (未验证) 提交于 2019-12-02 22:56:40
由于工作的需要,开始学习GDB! 学习使用了GDB一段时间后,发现它真的好强大!好用! GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3、当程序被停住时,可以检查此时你的程序中所发生的事。 4、动态的改变你程序的执行环境。 从上面看来,GDB和一般的调试工具没有什么两样,基本上也是完成这些功能,不过在细节上,你会发现GDB这个调试工具的强大,大家可能比较习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。让我们一一看来。 一个调试示例 ―――――― 源程序:tst.c 1 #include <stdio.h> 2 3 int func(int n) 4 { 5 int sum=0,i; 6 for(int i=0; i<n; i++) 7 { 8 sum+=i; 9 } 10 return sum; 11 } 12 13 14

植物大战僵尸游戏部分破解

匿名 (未验证) 提交于 2019-12-02 22:56:40
植物大战僵尸游戏部分破解 【实验目的】 通过对电脑单机游戏植物大战僵尸的逆向分析、破解,进一步熟悉常用调试工具,如Ollydbg、cheatengine,同时能更熟练的掌握了调试中常用的方法和技巧。更加了解如何在工具中设置断点,帮助分析代码。 【实验要求】 一、完成基本调试工具的下载和使用。 二、使用调试工具对程序进行分析,找到程序关键代码 三、在ollydbg中修改程序关键代码或逻辑。具体完成以下两处主要破解: 【实验环境】 调试工具:OllyICE吾爱破解专版、CheatEnigine6.7 待破解程序:PlantsVsZombies.exe(植物大战僵尸年度旗舰版) 【实验过程】 一、改变阳光拾取值,步骤如下: 运行游戏PlantsVsZombies.exe并在OllyICE中附加进程PlantsVsZombies.exe。 在CheatEngine中附加游戏PlantsVsZombies.exe进程。 观察游戏,发现阳光初值为精确数值50,且拾取一次阳光时数值变为75,阳光拾取值为25 游戏刚开始时,阳光值为50,暂停游戏,立即在CE中首次扫描精确数值50 回到游戏,拾取一次阳光后,阳光值变为75,暂停游戏,在CE中再次扫描精确数值75 可知该地址的值4B即阳光值75 二、改变植物冷却时间步骤如下: 运行游戏PlantsVsZombies

Python程序调试――pdb

匿名 (未验证) 提交于 2019-12-02 22:54:36
pdb的常用命令说明: 1)查看运行到哪行代码 l 2)单步运行,跳过函数 n 3)单步运行,可进入函数 s 4)查看变量值 p 变量 5)断点设置到第几行 b 行号 6)显示所有断点列表 b 7)删除某个断点 cl 断点号 8)删除所有断点 cl 9)跳到下一个断点 c 10)return当前函数 r 11)退出 exit 调试记录: 1.pdb设置断点 import pdb 在需要设置断点的地方加入pdb.set_trace() 2.执行 python3 -m pdb test.py 转载于:https://www.cnblogs.com/chinasun021/archive/2013/03/19/2969107.html 转载请标明出处: Python程序调试――pdb 文章来源: Python程序调试――pdb

ubuntu下命令行调试Python程序

匿名 (未验证) 提交于 2019-12-02 22:51:30
Python https://docs.python.org/2/library/pdb.html https://docs.python.org/3/library/pdb.html python -m pdb hello.py 删除断点:(Pdb) cl 2 #删除第2个断点 (clear的首字母) Run to Line:(Pdb) j 10 #运行到地10行,jump的首字母 (Pdb) a #查看全部栈内变量 (Pdb) q #退出,quit的首字母 来源:博客园 作者: damoguying 链接:https://www.cnblogs.com/puhongtao/p/11454568.html

使用 VS Code 开发和调试 .NET Core 程序

匿名 (未验证) 提交于 2019-12-02 22:06:11
电脑不想装几十个G的 VS2017,那就用 VS Code 吧 目标: 创建一个单元测试项目 Skany.Tests,引用类库 Skany.Core,并测试其中的方法 创建一个控制台应用程序项目 Skany.Output,引用类库 Skany.Core,并输出方法执行结果 创建一个解决方案 Skany.sln,包括以上三项目 环境 .NET Core SDK 2.2.202 开始 首先在 VS Code 安装几个扩展插件 C# C# Extensions .NET Core Test Explorer 当然你还可以安装更多的插件,也有助于开发 构建项目 创建解决方案文件夹 C:\Here\Skany 在 VS Code 中打开这个文件夹 在 VS Code 中打开终端(也可以在外部使用cmd或powershell) 接下来将使用 .NET Core CLI 命令创建项目 # 创建类库项目 dotnet new classlib -n Skany.Core # 创建控制台应用程序 dotnet new console -n Skany.Output # 创建xUnit单元测试项目 dotnet new xunit -n Skany.Tests # 为 Output 添加 Core 引用(因为当前在解决方案目录,而不是项目目录,所以add后要加上项目名,以下同理) dotnet add

C# windows服务的创建与调试

匿名 (未验证) 提交于 2019-12-02 22:06:11
Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的。所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Windows Service写很深入。 本文介绍了如何用C#创建、安装、启动、监控、卸载简单的Windows Service 的内容步骤和注意事项。 一、创建一个 Windows Service 1 )创建 Windows Service 项目 2 )对 Service 重命名 将Service1重命名为你服务名称,这里我们命名为ServiceTest。 二、创建服务安装程序 1 )添加安装程序 之后我们可以看到上图,自动为我们创建了ProjectInstaller.cs以及2个安装的组件。 2 )修改安装服务名 右键serviceInsraller1,选择属性,将ServiceName的值改为ServiceTest。 3 )修改安装权限 右键serviceProcessInsraller1,选择属性,将Account的值改为LocalSystem。 三、写入服务代码 1 )打开 ServiceTest 代码 右键ServiceTest,选择查看代码。 2 )写入 Service 逻辑 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

VS2015调试,签名时出错: 未在路径 C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\bin\\signtool.exe 找到 SignTool.exe

匿名 (未验证) 提交于 2019-12-02 22:06:11
1.发布项目是出现这个错误网上找了有两种方式, 一种是重新安装VS2015的ClickOnce程序 第二种是修改项目文件的签名 右击项目文件的属性,选择签名,然后把红框内去掉,保存即可。 转载请标明出处: VS2015调试,签名时出错: 未在路径 C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\bin\\signtool.exe 找到 SignTool.exe 文章来源: VS2015调试,签名时出错: 未在路径 C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\bin\\signtool.exe 找到 SignTool.exe