Skip to main content

在检查点检查对象

学习目标

完成本单元后,您将能够:
  • 在 Apex 代码中设置检查点。
  • 使用检查点检查器分析内存中的对象。
备注

备注

用中文(简体)学习?在中文(简体)Trailhead Playground 中开始挑战,用括号中提供的译文完成挑战。仅复制并粘贴英文值,因为挑战验证基于英文数据。如果在中文(简体)组织中没有成功通过挑战,我们建议您 (1) 将区域设置切换为美国,(2) 按此处说明将语言切换为英文,(3) 再次单击“检查挑战”按钮。

查看 Trailhead 本地化语言徽章详细了解如何利用 Trailhead 译文。

在 Apex 代码中设置检查点

当飞船开始探测系统错误时,必须直接查看日志,以找出错误和出错的位置。

同样,当 Apex 代码导致错误,出现性能问题或无法产生预期结果时,第一步就是要使用调试日志找出问题所在。逐行梳理整个日志是一项枯燥乏味的任务。这时就是检查点可以派上用场的时候!检查点可以显示执行期间的特定时间 Apex 代码执行情况的快照。

您最多可以在 Apex 代码中设置五个检查点。检查点不可用于 Visualforce 标记。

让我们在之前创建的 EmailMissionSpecialist 类中设置一个检查点。
  1. 选择文件 | 打开,之后打开 EmailMissionSpecialist 类。
  2. 选择调试 | 更改日志级别
  3. 在“您的一般跟踪设置”部分,单击添加/更改
  4. ApexCode 日志级别设置为 FINEST
    注意:要设置检查点,需要具备“查看所有数据”的用户权限。要使用检查点生成结果,使用执行匿名运行代码,或自行设置一个 DEVELOPER_LOG 跟踪标记。跟踪标记必须包含 INFO 的 Apex 日志级别或更高级别。
  5. 要保存更改,单击完成
  6. 要退出“更改日志级别”对话框,单击完成

源代码编辑器中显示代码时,可以在左侧看到行号。单击 inspectResults(results); 的行号。红点 (1) 出现,即表示检查点已创建成功。

设置检查点

现在您可以执行代码并使用“检查点”选项卡对其进行分析。

检查点选项卡

您可以使用“检查点”选项卡准确查看代码执行出错的位置,以及此时对象的值。我们来运行此代码,以便查看实际应用中的检查点。

选择调试 | 打开执行匿名窗口。输入以下代码并执行。请务必将“输入您的电子邮件地址”替换为自己的电子邮件地址。

EmailMissionSpecialist em = new EmailMissionSpecialist();
em.sendMail('Enter your email address', 'Flight Path Change', 
   'Mission Control 123: Your flight path has been changed to avoid collision '
   + 'with asteroid 2014 QO441.');

成功运行 Apex 代码后,打开调试日志并单击检查点选项卡,以查看结果。

检查点选项卡
  • “检查点”表可以显示每个检查点的命名空间、类和行号。它还可以显示每个检查点的创建日期和时间。
  • “检查点位置”表可以显示所选检查点捕获的文件名、行号和迭代。

双击“检查点”表中的一个检查点,以便在检查点检查器中查看捕获的结果。现在就好玩了!

检查点检查器

检查点检查器有两个选项卡:“堆”和“符号”。
  • - 显示内存中执行检查点的代码行处的所有对象。
  • 符号 - 以树视图显示内存中的所有符号。

堆选项卡

“堆”选项卡包括一些很棒的调试面板,例如“类型”面板。此面板可以显示实现实例化的对象数量以及它们消耗的内存字节数。我们来看看您设置的检查点捕获的详细信息。
  1. 在“类型”下,单击 Messaging.SingleEmailMessage
  2. 在“实例”下,单击此对象类型的任何实例。
  3. 在“状态”下,查看对象的字段以及字段的值。
检查点检查器中的“堆”选项卡

符号选项卡

“符号”选项卡是一种查看任何检查点各种对象状态的快速且简单的方法。符号是引用特定对象的唯一名称。该选项卡能够以树视图显示内存中的所有符号。

检查点检查器中的“符号”选项卡
作为“指挥官”,您不仅需要检查系统运行是否平稳,还需要对错误进行追踪。让我们看看检查点检查器如何帮助您更好地理解您的代码。
  1. 要从选项卡中清除检查点结果,选择调试 | 清除 | 检查点结果面板
  2. 选择调试 | 打开执行匿名窗口
  3. 再次运行 EmailMissionSpecialist 类,这次使用一个无效的电子邮件地址,例如 testingemail
    EmailMissionSpecialist em = new EmailMissionSpecialist();
    em.sendMail('testingemail', 'Flight Path Change', 
       'Mission Control 123: Your flight path has been changed to avoid collision '
       + 'with asteroid 2014 QO441.');
  4. 运行代码后,单击检查点选项卡。

“检查点”选项卡不会显示任何结果,因为您的代码没有执行到设置检查点的行号。

检查点选项卡结果
我们早一点在代码中添加一个检查点,这样我们就可以在我们的代码遇到 testingemailerror 之前在新的检查点捕获信息。
  1. 选择文件 | 打开,之后打开 EmailMissionSpecialist 类。
  2. 单击左侧的行号,打开 String[] toAddresses = new String[] {address}
  3. 选择调试 | 清除 | 检查点结果面板
  4. 选择调试 | 打开执行匿名窗口
  5. 使用一个无效的电子邮件地址再次运行 EmailMissionSpecialist,例如 testingemail。
    EmailMissionSpecialist em = new EmailMissionSpecialist();
    em.sendMail('testingemail', 'Flight Path Change', 
       'Mission Control 123: Your flight path has been changed to avoid collision '
       + 'with asteroid 2014 QO441.');
  6. 单击检查点选项卡。

您会在“检查点”选项卡中看到一个新的条目。现在,您可以使用检查点检查器对内存中的对象进行分析。

检查点选项卡结果
在 Salesforce 帮助中分享 Trailhead 反馈

我们很想听听您使用 Trailhead 的经验——您现在可以随时从 Salesforce 帮助网站访问新的反馈表单。

了解更多 继续分享反馈