一. 前戏

断言

二. 入门

单步跟踪

断点及其属性

BreakIf

附加进程

远程调试

查看变量值

命令行参数

日志输出

三. 进阶

函数的调用栈

  • Call Stack窗口Delphi程序调试 - 图1

  • 每个线程有一个独立的栈,Delphi中,栈大小默认最大1M,初始分配16kb。修改方法:Delphi程序调试 - 图2

  • 栈是一种先进后出的结构,每次函数调用,都会入栈一堆数据,然后跳转到新的函数去执行,在函数执行完之后,会出栈一堆数据。栈的大小限制了程序能够调用函数的数量,如果一个函数被递归调用的次数过多,就会出现栈溢出——“stack overflow at 0xXXXXXXXX”。

线程状态

模块及模块函数入口地址列表

CPU断点

事件日志

内存分配挂钩

四. 高级

查找内存泄露

  • 工具 EurekaLog

  • 排查内存问题,选中Features > Memory problems > RAW stack tracing

    • Delphi程序调试 - 图3

死锁的查找

死循环查找

调试 DLL 程序