转: windbg-跳过初始断点(调试技巧)

推荐:windbg 调试驱动设置断点

在对windows的驱动做双机调试时,总会需要在自己编写的驱动代码上设置断点。

1 这需要首先,在windbg上设置工作空间(workspace)

在这步

ntdll!LdrpDoDebuggerBreak+0x2c:
7757054e cc              int     3
0:000> kv
ChildEBP RetAddr  Args to Child
0030f3c8 77550e00 7ffdf000 7ffd3000 775a714c ntdll!LdrpDoDebuggerBreak+0x2c (FPO: [SEH])
0030f528 77536047 0030f59c 774d0000 7121b76b ntdll!LdrpInitializeProcess+0x11a9 (FPO: [2,83,4])
0030f578 775335e9 0030f59c 774d0000 00000000 ntdll!_LdrpInitialize+0x78 (FPO: [SEH])
0030f588 00000000 0030f59c 774d0000 00000000 ntdll!LdrInitializeThunk+0x10 (FPO: [2,0,0]

LdrpInitialize函数是一个新进程的初始线程开始在用户态执行最早代码,LdrpInitializeProcess函数的一个主要任务是加载EXE文件所依赖的动态链接库,在加载每个DLL后,LdrpInitializeProcess都会检查当前进程是否被调试,如果是,则调用用DbgBreakPoint 通知调试器,注意此时并没有调用每个DLL的Dllmain函数

初始断点不是调试器可以得到的最早控制机会,如进程创建事件和EXE模块加载事件都会比它早

如:

sxe cpr

然后.restart就可以先断到进程创建的时候
然后强制把PEB的BeingDebugged字段改为0:

推荐:c\c++出bug调试技巧 —— 如何利用windbg + dump + map分析程序异常 .

之前碰到论坛里有几个好友,说程序不时的崩溃,什么xxoo不能read的!  如果光要是这个内存地址,估计你会疯掉~~ 所以分享一下基本的调试技巧,需要准备的工具有W

0:000> db @$peb
7ffdb000  00 00 01 08 ff ff ff ff-00 00 2e 01 00 00 00 00  ................
7ffdb010  00 00 01 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
7ffdb020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
7ffdb030  00 00 00 00 00 00 00 00-00 00 71 77 00 00 00 00  ..........qw....
7ffdb040  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
7ffdb050  00 00 00 00 00 00 00 00-00 00 fa 7f 00 00 fa 7f  ................
7ffdb060  24 00 fd 7f 04 00 00 00-00 00 00 00 00 00 00 00  $...............
7ffdb070  00 80 9b 07 6d e8 ff ff-00 00 10 00 00 20 00 00  ....m........ ..
0:000> eb @$peb+2
7ffdb002 01 0
0
7ffdb003 08 

0:000> db @$peb
7ffdb000  00 00 00 08 ff ff ff ff-00 00 2e 01 00 00 00 00  ................
7ffdb010  00 00 01 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

这样,windbg就不会中断到初始断点了!

推荐:调试技巧 —— 如何利用windbg + dump + map分析程序异常

之前碰到论坛里有几个好友,说程序不时的崩溃,什么xxoo不能read的! 如果光要是这个内存地址,估计你会疯掉~~ 所以分享一下基本的调试技巧,需要准备的工具有Wi

原文地址:https://www.cnblogs.com/hjbf/p/12148389.html

时间: 2024-09-30 09:03:50

转: windbg-跳过初始断点(调试技巧)的相关文章

参考博客:Java断点调试技巧

Java断点调试技巧: 如何调试Java程序? 大家最开始学习Java,都会觉得IDE调试好高端有木有,其实很简单了. 下文会尽量简单直观的教会你在Eclipse中调试,其他的IDE调试步骤也是类似的. 1.在你觉得有错的地方设置断点. 在代码行数前,点击右键,注意是右键,然后选择Toggle Breakpoint. 你可能会问,我如何知道在哪儿放置断点? 如果对这个问题完全没有感觉,你完全可以多打几个断点,单步调试直到找到异常,只是多花一点时间而已,而且这样可以更深入了解程序的执行过程! 当然

Xcode断点调试技巧

本文转载自破船 在程序中,无论是你想弄清楚为什么数组中有3个对象而不是5个,或者为什么一个新的玩家开始之后,游戏在倒退——调试在这些处理过程中是比较重要的一部分.通过本文的学习,我们将知道在程序中,可以使用的大多数重要调试功能,并如何利用这些调试功能来帮助你以更少的时间解决bug. 本文将介绍如下内容: 使用控制台检查程序的状态 进行日志记录,并熟练的驾驭NSLog 利用对象的生命周期跟踪内存的使用 使用控制台进行检查 在进行调试程序的时候,可能Xcode底部的小黑框会是你最好的朋友.它能输出日

Intellij IDEA debug断点调试技巧与总结详解篇

Intellij IDEA 2017 debug断点调试技巧与总结详解篇 https://blog.csdn.net/qq_27093465/article/details/64124330?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task IDEA--IDEA debug断点调试技巧 https://blog.csdn.net/minkeyto/arti

Chrome调试折腾记_(3)JS断点调试技巧

JS调试技巧 技巧一:格式化压缩代码 技巧二:快速跳转到某个断点的位置 右侧的Breakpoints会汇总你在JS文件所有打过的断点,点击跟checkbox同一行的会暂时取消这个断点,若是点击checkbox下一行的会直接跳转到该断点的位置 技巧三:查看断点内部的作用范围[很实用] 右侧的scope可以看到相当多实用的信息,比如this的指向,是否有值,断点是对象还是其他等.. 技巧4:监听事件断点 右侧的Event Listener Breakpoints可以选择性的监听某类行为事件,比如键盘

NX二次开发-NX+VS写代码设断点调试技巧

在做NX二次开发的时候写完代码,编译可以通过,但是执行的时候却没有反应,或者得到的结果不对,说明肯定有地方传值出错了.我在查找代码错误的时候有几种方法:1.uc1601打印函数输入和输出的值看对不对.2.VS设断点-添加进程调试,来看输入输出值对不对3.UF_CALL也就是UF_get_fail_message这个函数,来看函数自己用的对不对.4.查看NX-Help-LogFile(日志),拖到最后看提示了哪些错误. 我一般用的比较多的是设断点调试,这里先说设断点调试.其他方法改天再写. 写举一

比较实用的断点调试技巧

[1.普通断点] 这个没啥说的,所有的程序员都会,普通断点就是没有任何条件的断点,运行到断点就会debug,在某一行创建断点的快捷键是:command+\ 接下来是要重点说明的 [2.条件断点] 普通断点可以加条件也可以不加,我们还能对断点的属性进行配置,设置条件,使断点更加智能化,右键点击断点: 我以一个循环作为测试代码: 循环中的代码每次都要单步执行,如果我想要在i为3的时候中断程序,进行调试,编写条件如下: 设置i==3的条件后,程序就会在该条件时中断,而不会每次到达该位置都中断.中断时输

IDEA--IDEA debug断点调试技巧

目录 一.Debug开篇 二.基本用法&快捷键 三.变量查看 四.计算表达式 五.智能步入 六.断点条件设置 七.多线程调试 八.回退断点 九.中断Debug Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化.通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码. 一.Debug开篇 首先看下IDEA中Debug模式下的界面. 如下是在IDEA中启动Debug模式,进入断点后的界面,我这里

IDEA debug断点调试技巧

Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化.通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码. 一.Debug开篇 首先看下IDEA中Debug模式下的界面. 如下是在IDEA中启动Debug模式,进入断点后的界面,我这里是Windows,可能和Mac的图标等会有些不一样.就简单说下图中标注的8个地方: [图1.1] ① 以Debug模式启动服务,左边的一个按钮则是以Run模式启

Eclipse断点调试

作为开发人员,掌握开发环境下的调试技巧十分有必要.关于java调试技术还有很多,如Java Debug Interface等,依据具体项目的需要,还有很多值得去研究和学习的.该博文仅就Eclipse断点调试技巧做下总结,不足够的地方还请大神们指点. 1  Debug视图 1.1 线程堆栈视图 线程堆栈视图表示当前线程的堆栈,从中可以看出在运行哪些代码,并且整个调用过程,以及代码行号.分别介绍一下这几个按钮的含义.从左至右分别为: 1.表示当前实现继续运行直到下一个断点,快捷键为F8. 2.表示打