如何生成公有调试符号
生成公有调试符号有2种形式:1.编译链接过程中生成;2.从私有调试符号文件中剥离生成
编译链接过程中生成
方式一
工程属性-Linker-Debuging-strip private symbols
方式二
关于C++标准异常之std::out_of_range
简介
定义于头文件
<stdexcept> 关于Windows系统里的事后调试我一直在想,应用程序抛出未处理的异常和附加到进程的调试器之间会发生什么。显然这些信息就在我眼皮底下,但我是瞎子。Windows调试器关于事后调试的文档包含了您想要知道的所有详细信息。
VC调试器高级应用----高级断点篇高级断点语法高级断点语法由两部分组成:
必须指定唯一的,足够的上下文信息才能获取断点位置.如: VC调试器中可直接输入上下文语法:Breakpoints对话框的Location选项卡BreakAt编辑框中。更容易的方法是使用BreatAt框右的箭头打开菜单,选择Advanced项,然后在Context框中输入断点的相应信息. 如想在一个绝对地址上中断,直接在BreakAt框中输入地址就行。 任何函数上快速中断将函数名输入BreadAt框中.如果是C++代码,同时还需要类限定符.支持重载了的函数,调试器会列出所有满足条件的函数供选择,如输入时提供足够的信息,完全可略过选择过程.如输入:"CString::operator=(const 在系统或DLL输出的函数中设置断点在程序中从DLL输入的函数中设置一个断点可能是毫无作用的,调试器需要知道在何处可以找到该函数上下文信息,同时,函数名取决于是否加载了DLL的符号.只有在W2K以上版本中才能在系统DLL中设置断点--原因在于其它系统没有提供边写入边复制保护的功能,若一定要启用这种方法,必须要有COFF(Common 位置断点修饰符跳跃计数功能是执行断点但不在断点处停止,直到执行完了一个特定的次数为止。使用中首先设置一个标准的位置断点,打开BreadPoint对话框,选中该断点,单击Condition,然后在弹出的对话框最下面的编辑控件中输入次数。 只有当程序全速运行时,未执行的循环次数才有用.单步执行跨过断点时不会更新跳跃计数。 条件表达式只有表达式为真时触发.Breakpoint框Condition按钮,选第一个编辑框,输入表达式即可.规则: 变量更改在变量更改时中断程序.只有当位置断点执行时才能检查变量.常用用调用栈高层的函数中发现出错,需要深入调用栈,压缩范围找出根源时. 添加时在Breakpoint框第一个编辑框中输入变量名(可以是指针指向听对象:*p),在第二个编辑框中输入要查看的项目数量. 全局表达式和条件断点调试器可监控某一地址和该地址上的1,2或4字节的内容.如可用硬件调试寄存器,则不影响速度;否则程序将单步执行ASM指令并在每一步中检查条件,这将严重影响程序运行速度. WINDOWS消息断点Breakpoint框的Message页.需要指定一个窗口过程,注意:MFC世界中AfxWndProc是多数窗口的一个窗口过程,所以总会在该断 验证符号文件的又一方法(!itoldyouso)如果您正在开发软件,很可能遇到了“不匹配的PDB”调试器错误。当您将调试器指向错误的符号路径时,通常会发生这种情况。 但有时你确信你所指向的符号是正确的符号,这让你想知道为什么调试器认为这些符号不匹配。
|