调用堆栈窗口:查看函数调用的顺序列表。
通过调试-》窗口-》调用堆栈,打开调用堆栈窗口。
调用堆栈窗口的重要功能是:可以找到当前函数的调用函数,以及依次往前的每一级调用函数。
调用堆栈窗口会按照函数的调用顺序来显示,窗口中顶部为栈顶,底部为栈底,栈底的函数最先被调用,每个函数调用称为帧,即栈帧,调用堆栈由一帧帧函数组成,其中的信息无法手动修改,如名称,路径,符号状态等,但可以通过设置控制器是否显示在窗口中。
调用堆栈窗口中排列着一组函数信息,内容主体是个函数栈,最上面的函数,就是第一级函数,是最后被调用的函数,也是在打上断点调试的情况下,当前进程运行到的位置,
第一级函数下面的第二级函数,就是调用了第一级函数的函数,
第二级函数下面的第三级函数就是调用了第二级函数的函数,
通过调用堆栈窗口可以很容易的理清当前运行到的位置函数的调用函数,也就是上一级函数是谁,通过在调用堆栈中双击某个函数就可以跳转过去。
但是调用堆栈窗口中显示的是自下而上有调用关系的函数,如果第二级函数调用第一级函数之前调用了其他的函数,其他函数是不会显示在调用堆栈的窗口中的。
设置符号信息:
场景:
在当前工程引入了外部动态库的情况下,程序员准备好了该动态库的源码,准备将源码附加到运行中的进程进行调试,排查有可能出现在动态库中的bug。
pdb符号文件:
pdb文件就是文件后缀为.pdb的文件,pdb文件和动态库一起生成,名称和其对应的动态库相同,动态库常有更新时,对应的调试符号pdb也必须时刻与对应的源代码同步。
用法:
将准备好的源代码附加给正确的进程号,调用堆栈窗口可以显示该进程调用到的动态库和函数,右键窗口-》符号设置,将保留pdb文件的路径复制到符号路径下,点击确定,编译器会自动加载符号,路径下的pdb会全部加载到当前进程中与之对应的被调用的动态库,也有部分动态库找不到pdb符号文件,但只要需要被调试的模块加载好了符号,就可以在该模块中打上断点,然后触发事件进行调试了。