如何在 gdb 脚本中编写循环?

wan*_*r95 10 gdb

在调整了这个答案之后,我编写了以下循环来简单地在名为“gdb_script.gs”的脚本中在 gdb 中打印一个数组。我究竟做错了什么?

set $end=64  
while ($i<$end)
   print $i
   print volfrac($i, :, 1)
   set $i=$i+1
end
Run Code Online (Sandbox Code Playgroud)

其中 volfrac(:,:,:) 是一个 Fortran 数组。我收到错误:

 gdb_script.gs:14: Error in sourced command file:
 A syntax error in expression, near `<$end)'.
Run Code Online (Sandbox Code Playgroud)

wan*_*r95 9

另一个答案完全没有抓住重点。提示是报告的错误:

    gdb_script.gs:14: Error in sourced command file:
    A syntax error in expression, near `<$end)'.
Run Code Online (Sandbox Code Playgroud)

提示是<$end),这意味着 while 语句中存在语法错误。通过进一步试验,如果将来其他人需要它,我将发布我的结果:

 set $ipx=0
 set $end=32

 while ($ipx .lt. 32)
     print $ipx
     print ro($ipx, 1)
     set $ipx=$ipx+1
 end
Run Code Online (Sandbox Code Playgroud)

关键是使用 fortran 语法进行比较($ipx .lt. 32)而不是通常的“c”语法($ipx < 32)。