随笔分类 -  调试

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 32 下一页

关于bug调试工具的使用/方法/经验
WinDbg常用命令系列---!lmi
摘要:!lmi !lmi 扩展显示某个模块的详细信息。 语法 !lmi Module 参数 Module用名字或者基地址指定一个已加载的模块。 DLL Windows 2000 Dbghelp.dll Windows XP和之后 Dbghelp.dll 注释 可以使用lm (List Loaded Mod 阅读全文

posted @ 2020-06-05 08:23 活着的虫子 阅读(1149) 评论(0) 推荐(0)

调试时符号文件问题排查思路
摘要:符号问题会以各种方式表现出来。可能堆栈回溯显示错误信息,或者不能显示堆栈中的函数名。也可能调试器命令不能识别模块、函数、变量、结构或数据类型的名字。 如果猜测没有正确加载符号,可以通过几个步骤来确认问题。 首先,使用lm (List Loaded Modules)命令来显示已加载模块和符号信息的列表 阅读全文

posted @ 2020-06-04 08:21 活着的虫子 阅读(1082) 评论(0) 推荐(0)

windbg里符号状态缩写
摘要:符号文件的类型和它们的加载状态可以通过lm (List Loaded Modules)命令、 !lmi扩展命令或 WinDbg的Debug | Modules菜单命令获取。 它们都可以显示已加载的模块和它们的符号的信息。 下面这些缩写是这些命令产生的输出中使用的: 缩写含义 deferred 模块已 阅读全文

posted @ 2020-06-03 08:17 活着的虫子 阅读(268) 评论(0) 推荐(0)

符号语法和符号匹配
摘要:符号用来直接操作被调试程序的助记符(tokens)。例如,可以通过命令bp main 来在main函数上设置断点,或者使用dd MyInt L1命令来显示整数变量MyInt 的值。很多情况下,符号可以作为调试器命令的参数。可以支持大多数数字参数,以及一些文本参数。除了常规的符号语法之外,也有一些适用 阅读全文

posted @ 2020-06-02 08:20 活着的虫子 阅读(528) 评论(0) 推荐(0)

VC8 CRT的默认无效参数行为不会进入调试器
摘要:在这里工作的人时常感到困惑的一个问题是,如果你碰巧遇到了一个条件,这个条件触发了VC8的“无效参数”处理程序,并且你在这个进程上附加了一个失败的调试器,那么这个进程神秘地退出,而没有给调试器一个检查程序状态的机会问题。对于那些不熟悉这个概念的人,“无效参数”处理程序是微软CRT的一个新添加,如果遇到 阅读全文

posted @ 2020-06-01 08:40 活着的虫子 阅读(327) 评论(0) 推荐(0)

符号延迟加载
摘要:当我们在windbg里执行lm指令后,回见到如下情况: 有的模块名后面跟的时pdb symbols,表示已加载符号,且后面还跟着符号的详细路径。有的模块后面跟着的是deferred,表示模块已经加载,但是调试器还没有尝试加载它的符号。符号将在需要的时候被加载。那么什么是延迟加载? 符号延迟加载 默认 阅读全文

posted @ 2020-05-29 08:22 活着的虫子 阅读(470) 评论(0) 推荐(0)

记一次格式化输出参数类型不匹配导致崩溃的排查
该文被密码保护。

posted @ 2020-05-28 08:15 活着的虫子 阅读(0) 评论(0) 推荐(0)

ntdll!NtTerminateProcess+0xc (FPO: [2,0,0])的FPO: [2,0,0]是什么?
摘要:经常在调试分析dmup时,会看到很多线程栈在函数的后面会带上FPO,如下所示: 00 00eff818 777beb0d ffffffff 00000000 0107a2ec ntdll!NtTerminateProcess+0xc (FPO: [2,0,0])01 00eff8f0 762c4f3 阅读全文

posted @ 2020-05-27 08:39 活着的虫子 阅读(501) 评论(0) 推荐(0)

STATUS_INVALID_CRUNTIME_PARAMETER和STATUS_INVALID_PARAMETER的区别
摘要:前面有两个随笔介绍了这两个异常(《异常STATUS_INVALID_PARAMETER(0xC000000D)》和《关于异常STATUS_INVALID_CRUNTIME_PARAMETER(0xC0000417) 》),它们都是参数无效的异常,但针对的对象不一样。STATUS_INVALID_CR 阅读全文

posted @ 2020-05-26 08:17 活着的虫子 阅读(774) 评论(0) 推荐(0)

关于异常STATUS_INVALID_CRUNTIME_PARAMETER(0xC0000417)
摘要:简介 STATUS_INVALID_CRUNTIME_PARAMETER,值为0xC0000417,又称CRT参数无效异常,其定义如下: //// MessageId: STATUS_INVALID_CRUNTIME_PARAMETER//// MessageText://// An invalid 阅读全文

posted @ 2020-05-25 08:20 活着的虫子 阅读(1300) 评论(0) 推荐(0)

分析崩溃以查找应用程序中的安全漏洞
摘要:如何确保程序中的崩溃不可利用?简而言之,答案很简单:假设每个崩溃都是可利用的,然后修复它!至少,这是一个质量问题,在产品交付给客户之前解决这个问题通常更便宜、更实用。执行确定可利用性所需的分析可能会相当昂贵。分析与内存损坏相关的程序故障,以了解安全后果可能是一项复杂且容易出错的任务。必须考虑几个因素 阅读全文

posted @ 2020-05-22 08:16 活着的虫子 阅读(718) 评论(0) 推荐(0)

关于异常STATUS_STACK_BUFFER_OVERRUN(0xC0000409)
摘要:简介 STATUS_STACK_BUFFER_OVERRUN,值为0xC0000409,又称栈缓冲区溢出异常,其定义如下: /// MessageId: STATUS_STACK_BUFFER_OVERRUN//// MessageText://// The system detected an o 阅读全文

posted @ 2020-05-21 10:28 活着的虫子 阅读(12175) 评论(0) 推荐(0)

通过Visiual Studio调试理解异常
摘要:如果您花了任何时间编写代码,很可能您不得不处理异常处理。在Visual Studio中,当异常被抛出或最终未被处理时,调试器可以帮助您通过中断来调试这些异常,就像在遇到断点时中断一样。下面我们将讨论异常的不同分类,以及如何配置调试器何时为这些异常中断。 异常分类 我们将从调试器中异常的分类类型开始。 阅读全文

posted @ 2020-05-20 08:38 活着的虫子 阅读(617) 评论(0) 推荐(0)

Visual Studio 2015 Update 1及之后的版本对C++ 内存访问异常调试的一点改进
摘要:编写C/C++代码时,通常使用复杂的代码行来处理多个指针,例如,在单个行上访问多个指针。然而,当访问冲突发生时,很难破译这行代码的哪一部分是问题所在。为了调试这个问题,您可能已经将这一行代码分解成多行,但不会再这样了。当使用Visual Studio 2015更新1时发生这种情况时,您可以很容易地看 阅读全文

posted @ 2020-05-19 08:16 活着的虫子 阅读(365) 评论(0) 推荐(0)

仅从特定模块引发异常时中断(Visual Studio 2017及更高版本)
摘要:在Visual Studio 2015中,引入了新的异常设置窗口,该窗口提供了一种快速的方法,可以将调试器配置为在抛出异常时中断。作为窗口更新的一部分,仅仅按异常类型过滤并不总是足够好,您需要对调试器何时中断抛出的异常进行更细粒度的控制。因此,在Visual Studio 2017中,引入了一个新功 阅读全文

posted @ 2020-05-18 08:48 活着的虫子 阅读(1048) 评论(0) 推荐(0)

Visual Studio调试器指南---单击运行调试(2017及更高版本)
摘要:在Visual Studio中使用调试器浏览代码时,有许多选项,包括设置断点、单步执行和使用Run-to-Cursor。在Visual Studio 2017中,引入了Run to Click,这是一种更容易调试代码的新方法——点击式风格。不再需要设置临时断点或多次执行步骤来执行代码并在所需的行上停 阅读全文

posted @ 2020-05-16 08:44 活着的虫子 阅读(937) 评论(0) 推荐(0)

记一次数据库文件破坏引起的崩溃排查过程
该文被密码保护。

posted @ 2020-05-15 08:55 活着的虫子 阅读(0) 评论(0) 推荐(0)

Visual Studio调试器指南---Disassembly窗口
摘要:“反汇编”窗口显示与编译器所创建的指令对应的汇编代码。 如果你正在调试托管的代码,这些程序集指令对应于在实时 (JIT) 编译器,而非 Microsoft 中间语言 (MSIL) 由 Visual Studio 编译器创建所创建的本机代码。在调试的环境下,我们可以很方便地通过反汇编窗口查看程序生成的 阅读全文

posted @ 2020-05-14 08:44 活着的虫子 阅读(2666) 评论(0) 推荐(2)

Visual Studio调试器指南---Register窗口
摘要:寄存器是处理器(CPU)中的特殊区域,用于存储处理器需要当前处理的少量数据。 编译或解释源代码时会生成一些指令,这些指令根据需要将数据从内存移动到寄存器或反之。 相对于访问内存数据,访问寄存器数据非常快。那些允许处理器将数据保留在寄存器并多次访问的代码,比起那些需要处理器不断加载和卸载寄存器的代码执 阅读全文

posted @ 2020-05-13 08:36 活着的虫子 阅读(1536) 评论(0) 推荐(2)

Visual Studio调试器指南---Threads窗口
摘要:大多数的应用程序都使用多线程技术。对应Windows应用程序,为了能够使用户界面保持快速响应,经常需要把费时的任务放在与主应用程序独立的线程上运行。此时,多个线程的并发执行调试变得很困难,特别是在多个线程访问同一个类和方法时。Threads能够帮助我们减轻复杂度。 打开窗口 一般来说当程序遇到断点进 阅读全文

posted @ 2020-05-12 08:41 活着的虫子 阅读(2187) 评论(0) 推荐(1)

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 32 下一页

导航