当前位置: 首页 > article >正文

如何在 Eclipse 中调试ABAP程序

原文链接:Debugging an ABAP Program

ADT 中的调试器是一个重要的诊断工具,可用于分析 ABAP 应用程序。

使用调试器,您可以通过在运行时 Debug 单步执行(F5)程序来确定程序无法正常工作的原因。这使您可以看到正在执行的语句以及随着程序的进行而变量值的变化。

要使用调试器,您首先决定从哪里开始调试过程。一种方法是在源代码中设置断点,运行程序并在设置的断点处停止。

调试器中可用的一些功能如下:

ADT调试器的特点

Feature 特征ADT Debugger
设置断点Yes
观察点Yes (Depending on release) 是(取决于版本)
条件断点Yes
单步执行代码Yes
显示变量值Yes
分析内表可以在ABAP内部表视图中显示和编辑内表行,但可以自定义该视图
显示结构可以按字段显示结构,但无法自定义视图。
显示对象支持对象内容的结构化显示,但不提供自定义对象工具的数据显示的功能。
比较数据对象不适用于复杂的数据对象
分析内存使用情况No
调试器脚本No
更改调试器设置Yes
在调试器中直接编辑代码Yes

使用 ADT 调试 ABAP 程序

当您使用 ADT 调试 ABAP 程序时,您将使用“调试”透视图。这是标准 Eclipse 调试透视图的定制版本,它包含对于调试特别重要的视图和功能。

image.png

调试器视角的一些重要元素如下:

  • Source Code View:源代码视图是调试器透视图的中心部分。它显示源代码并突出显示程序中的当前位置。
  • Variables View:变量视图也非常重要。您可以使用此视图来显示变量的当前值。
  • Breakpoints View:Breakpoints 视图显示在 Variables 视图旁边(在上图中“调试透视图”中未选择)。您可以使用此视图来显示、删除或创建断点。断点是程序中正常处理被中断的点,系统会向您显示调试器,以便您可以分析程序在该时刻的状态。
  • Navigation Functions:在调试程序时,您可以使用导航函数来控制代码的执行。
  • Debug View:左上角的“调试”视图显示调试会话和调用层次结构。稍后当您调试模块化单元(例如方法)的调用时,您将需要它。
  • Perspective Selector:您可以使用右上角的透视选择器按钮切换回 ABAP Perspective Selector。

控制代码的执行

当开始调试时,使用导航函数来控制代码的执行。一些重要的导航功能如下:

  • Step Into (F5):选择单步执行,或选择键盘上的 F5 以执行单个步骤。使用此功能进行逐步分析。例如,如果您想查看实际执行了控制结构的哪个代码块。

image.png

  • Resume (F8):选择“Resume”(恢复),或选择键盘上的“F8”以执行程序直到下一个断点。如果调试器不再命中任何断点,则程序将执行到底并且调试会话终止。

image.png

  • Run to Line (Shift+F8)

选择“Run to Line”,或选择键盘上的“Shift+F8”,将程序执行到当前光标位置。选择代码行并选择此函数是设置断点、选择“恢复”并再次删除断点的便捷替代方法。

  • Jump to Line (Shift+F12)

选择“Jump to Line”或选择键盘上的 Shift+F12 可跳过某些代码行或向后跳转到某些已执行的代码。此功能有助于模拟删除某段代码时会发生的情况,或者重复调试您第一次错过分析的一些代码。请记住,这是跳转,而不是执行代码。当向后跳转时,对数据对象的更改不会恢复。

  • Terminate

如果调试完毕并且不想执行剩余的程序,请选择“终止”(红框图标)。调试会话立即终止。

Watchpoints

如果变量得到一个意想不到的值,您可以使用观察点在程序执行过程中跟踪其值。

image.png

变量上的简单观察点会导致程序在该变量的值发生更改时在调试器中停止。通过添加条件,程序不会在变量的每次值更改时停止,而是仅在条件也满足的情况下停止。

要在变量上设置观察点,只需在调试器中突出显示源代码中的变量,然后右键单击它并选择“设置观察点”。这会在变量上创建一个观察点,您可以在“断点”视图中看到该观察点。

选择观察点变量以向观察点添加条件,在断点列表中选择它,然后在条件字段中输入条件。选择键盘上的 Enter 以保存带有条件的观察点。

要删除观察点,请转至断点视图,右键单击观察点变量,然后选择删除。

创建 ABAP 应用程序

  1. 创建一个类。
  • 右键单击您的包。
  • 选择 NewABAP Class.

image.png

  1. 命名一个程序并添加描述。
  • 在名称字段中,输入 ZCL_S4D100_DEBUG
  • 在描述字段中,输入 Debug Program
  • 选择下一步。
  • 选择运输请求,然后选择完成。

image.png

  1. 在公共部分定义接口。

在公共部分中定义接口: IF_OO_ADT_CLASSRUN

image.png

  1. 将代码添加到程序中。
  • 使用 D0-ENDDO 循环和 WRITE 语句将以下循环代码添加到程序中。
  • 您可以通过 LV_NUMBER1 使用 DO-ENDDO 循环,并通过语句 OUT->WRITE( lv_number1 ) 输出结果。 编写代码时,应考虑以下事项:
    • WRITE 和左括号之间没有空格
    • 左括号后至少有一个空格
    • 右括号前至少有一个空格
    • 该行末尾有一个句点

image.png

  1. 激活程序并清除控制台。
  • 激活您的程序。
  • 按 F9 运行应用程序。
  • 选择右上角行中的“清除控制台”按钮以清除控制台内容。

image.png

调试程序并设置观察点

  1. 双击程序 ZCL_S4D100_DEBUG ,将代码更改为如下图所示,然后激活该程序。

image.png

在第 16 行设置断点。要在第 16 行设置断点,请双击该代码行的列号左侧,或右键单击列号左侧,然后选择“Toggle Breakpoint”以在以下位置设置断点: 16 行处。

image.png

结果:

image.png

  1. 执行应用程序。

通过执行 F9(在键盘上)来执行应用程序。蓝色箭头和突出显示的行(第 16 行)指示该语句。

双击变量 LV_NUMBER1(展开局部节点)。

image.png

  1. 执行代码。

按键盘上的 F5(单步)查看 LV_NUMBER2 的值从 0 更改为 3。

按 F8(Resume)按钮。

image.png

image.png

  1. 清除内容。

请注意,输出显示在 ABAP 控制台中。您可以通过选择控制台工具栏上的“Clear Console”按钮来清除内容。

image.png

  1. 为变量创建观察点。

要在变量上创建观察点,您必须位于调试器中。 在第 16 行设置断点。

通过选择 F9(在键盘上)来执行程序。

在调试器中,突出显示变量 LV_NUMBER1 并右键单击它,然后选择“Set Watchpoint”。

  1. 选择断点列表中的变量。
  • 双击变量 LV_NUMBER1
  • 选择 Breakpoints 选项卡。
  • 如果“Breakpoints”选项卡未自动显示,请选择“Breakpoints”按钮。

image.png

  • 此时,您可以添加条件。
  • 双击变量 LV_NUMBER1
  • 添加条件 (= 6) 并通过选择保存来保存条件。(注意:=6 之间有一个空格)

image.png

保存成功:

image.png

  1. 在观察点停止调试器。
  • 在 ABAP 编辑器中双击变量 LV_NUMBER1
  • 按键盘上的 F5(Step Into)。
  • 选择 Variables 选项卡。
  • 展开观察点 LV_NUMBER1,并注意变量 LV_NUMBER2 已更改为 3。

image.png

  • 按键盘上的 F8 resume 按钮。

image.png

结果:当 LV_NUMBER1 等于 6 时,观察点停止。

image.png


http://www.kler.cn/a/410209.html

相关文章:

  • oracle会话追踪
  • 《数据结构》学习系列——图(中)
  • 【人工智能】深度学习入门:用TensorFlow实现多层感知器(MLP)模型
  • 生成对抗网络模拟缺失数据,辅助PAMAP2数据集仿真实验
  • 开发者视角下的鸿蒙
  • java 老矣,尚能饭否?
  • 【vim】vim怎么把某一列内容复制到另一列
  • 长短时记忆网络(SLTM):理解与实践
  • 基于web的音乐网站(Java+SpringBoot+Mysql)
  • 用 Python 从零开始创建神经网络(十):优化器(Optimizers)(持续更新中...)
  • 利用Google的OR-Tools解决智能调度问题
  • 小程序-基于java+SpringBoot+Vue的美食推荐系统设计与实现
  • 无监督跨域目标检测的语义一致性知识转移
  • vxe-grid table 修改表格数据校验的主题样式
  • 深入解析分布式遗传算法及其Python实现
  • 基于YOLOv8深度学习的智慧农业棉花采摘状态检测与语音提醒系统(PyQt5界面+数据集+训练代码)
  • 一场开源视角的AI会议即将在南京举办
  • 线性代数空间理解
  • CHIMA网络安全攻防大赛经验分享
  • STM32F103C8T6实时时钟RTC
  • 高级java每日一道面试题-2024年11月24日-JVM篇-说说对象分配规则?
  • 【PHP】 基础语法,自学笔记(二)
  • 进程间通信--详解
  • ffmpeg视频滤镜:提取缩略图-framestep
  • 网络安全-安全散列函数,信息摘要SHA-1,MD5原理
  • 道品智能科技移动式水肥一体机:农业灌溉施肥的革新之选