
1编译好你的驱动,假设名为ShowSSDTsys,并把驱动符号文件ShowSSDTpdb发送到MySysSymbols文件夹下(之前设定的自己的调试符号文件夹)
2启动虚拟机,选择调试方式进入系统
3在Windbg中按下Ctrl+Break,输入bu ShowSSDT!DriverEntry(设置断点)回车确认然后输入g命令继续执行
4把ShowSSDTsys拖到虚拟机中(也可以通过网上邻居将驱动文件复制过去\\192168122\C$),在虚拟机系统中启动InstDrv,加载此驱动(也可以使用SRVINSTWEXE将驱动作为服务安装到系统,然后使用net start 驱动名或是 net stop 驱动名)
5回到Windbg窗口,如果一切正常的话,你会看到已经中断在ShowSSDTsys的入口代码处了
接下来,要单步还是要下断点、要继续执行什么的,就全由你来作主了~~
F9设置断点,在按一次则取消断点
F10单步前进,即单步执行,遇到函数(call指令),不会进入函数内部,而是继续函数返回后的工作
F11单步进入,即单步执行,遇到函数(call指令),则进入函数内部继续单步执行
Debug->Break中断调试(只有在中断的情况下才能设置断点)
默认会对两个路径进行搜索:
编译的时候的源文件路径
当前gdb的路径(即在gdb种执行pwd显示的路径,可以用cd改变)
所以你知道为什么不管可执行文件放到哪里,都能找到源文件了吧~如果你把源文件移走,就找不到了。这个时候,你可以通过dir命令添加路径进行查找。
gdb是GNU开源组织发布的一个强大的Linux程序调试工具,比图形化的调试工具更强大,主要来调试C/C++语言程序。
Debug 版本的可执行程序包含调试信息,用于程序员调试程序。
Release 版本的可执行程序往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以方便用户使用。
用gcc/g++编译时,要加上-g选项生成debug版本的可执行程序,否则就无法使用gdb调试了。
r 表示开始run, 如果在运行的过程中发生了错误,比如segmentation fault,可以查看此时的出错源代码:
通过b或者break设置断点,断点的设置可以通过函数名、行号、文件名+函数名、文件名+行号以及偏移量、地址等进行设置。
比如在function Peer_auto_save上设置断点,在peerc的第136行设置断点:
从断点处继续运行
退出gdb
方法如下:
右键maven工程,在d出的菜单中选择[Debug As],首次选择[Maven build],以后选择[Maven build]来读取保存的配置启动
在浏览器输入地址>
3解决:
点击[Edit Source Lookup Path]添加源代码工程或目录
完成后即可调试代码
学习使用一个软件的第一步,必然是先安装它。Proteus为付费软件,如果只是学习使用,建议去网上找破解版,找那种已破解好的单独执行文件,可以直接双击安装,而不需要替换文件等复杂 *** 作。推荐安装最新版,因为Proteus的低版本不能兼容高版本,而且只要差了一个小版本即不能兼容,如811可以打开810,但810不能打开811。这一点设计得就非常奇怪
下载到安装包后,接下来就是安装,这里需要注意的是,如果之前没有安装过这个软件,那么安装将非常简单,直接双击运行,然后不断点击下一步即可。但是,如果之前安装过这个软件然后又卸载了,就不要急着安装,先把之前安装的残余文件清理一下。
首先建议使用CCleaner清理注册表;
其次是单独删掉特定的注册表(CCleaner清理不掉的)
打开运行(WIN + R),输入regedit, 然后找到路径HKEY_CURRENT_USER\SOFTWARE\Labcenter Electronics,整体删除即可
在这里插入描述
在这里插入描述
第三步,保险起见,还可以用Everything搜索Proteus,然后把相关的文件都删掉。
进行完上面三步之后,重启一下电脑(也是保险起见),然后再安装软件,这样基本不会有什么问题了。
参考链接
2 汉化 *** 作
Proteus安装完默认是英文界面,看起来不太方便,可以去网上下载汉化包——一个名为Translation的文件夹,将其替换掉安装根目录下的同名文件夹即可。
3 新建工程
下面以新建8086工程为例演示如何建立一个工程
在首页点击新建工程
在这里插入描述
在这里插入描述
选择原理图和PCB
在这里插入描述
在这里插入描述 需要明确的一点是,Proteus不仅可以仿真电路,还可以画电路板,所以在建立工程时,需要选择原理图和PCB的模板,如果只是仿真程序逻辑的话,那么可以选择不创建PCB。
选择固件
在这里插入描述
这里要选择创建固件项目,相当于是选择一款可编程的单片机。由于仿真的是8086,所以系列选择8086,编译器要选择MASM32,如果没有这个选项或显示no configuration,可以点击右边的“编译器”按钮,下载安装一个MASM即可。
到此一个工程就建立完毕了,且软件已添加了主芯片8086,同时打开了两个页面:原理图、Source Code。一个连接电路,另一个编辑源代码。
4 8086设置
打开这个新建的工程后,直接运行是会报错的:Invalid internal memory size == NULL (Cheat mode),这是因为默认的8086内存大小设置为0,所以还需要设置一下8086芯片。
首先如下图所示,将internal memory size设置为0x10000。
在这里插入描述
关于Debugexe和mainasm
相信使用过这个软件的同学都被8086属性中的“Program File”那一项搞过心态,我之前也一直没搞懂这个到底是啥意思,最近仔细研究之后才找到一些规律。
经过试验发现,这个规律似乎和软件版本有关,不同的破解版似乎这个功能也不同,下面演示的是我电脑上的版本,还有一些版本似乎要求Debugexe必须和工程在同一个文件夹
首先是每一个工程都需要有一个Debugexe和mainasm,它们是工程编译(如下图所示,点击构建工程或重新构建工程)过程中产生的文件,且8086芯片属性中的“Program File”项即是工程编译产生的Debugexe所在的路径(相对路径)。
在这里插入描述
在这里插入描述
在这里插入描述
可以发现,新建的工程中,这一项是空白的,但是仍然可以正常编译运行(修改内存大小后),这是为什么呢?因为这个软件设置的是如果这一项为空,那么就会在默认路径(软件自定义的)下自动生成Debugexe和mainasm等编译文件,同时8086属性栏那一项也会变成默认路径。
那在编译运行前,先在这个路径选择一个已存在的文件Debugexe,会怎么样呢?那么在工程编译过程中会重新写入这些文件(可以通过文件修改日期看出来)。但是,需要注意的是,选择的路径对应的Debugexe必须是“完整的”,即有mainasm和一些编译文件。
在这里插入描述
在这里插入描述
如果“不完整”,比如手贱删掉了mainasm,此时再点击重新构建工程来编译时,可能会出现找不到mainasm的报错,不要慌,可以将其他文件全部删掉,同时将属性中的路径删掉,然后再点击编译就会重新生成这些编译文件。
主频设置
8086属性中还可以设置运行频率,这个在某些情况下是会影响程序的执行效果的。
在这里插入描述
5 基本使用
缩放:滚轮滚动
移动界面:按一下中键,移动鼠标,移动之后再按一下中键。也可以在左上角的概览图上移动界面。
在这里插入描述
鼠标单击左侧边栏各按钮,鼠标会变成对应功能的状态,只有重新点击一个按钮,上一个功能才会取消(也就是鼠标必须处于其中的某一种状态)
以上就是关于如何在windbg调试驱动时下断点需要在源程序修改吗全部的内容,包括:如何在windbg调试驱动时下断点需要在源程序修改吗、gdb在调试时是如何找到源文件在哪里、使用GNU/gdb调试Linux C/C++可执行程序查看出错源代码、设置断点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)