在适应了这个answer之后,我编写了下面的循环,只需在gdb中以一个名为"gdb_script.gs“的脚本打印一个数组。我做错了什么?
set $end=64
while ($i<$end)
print $i
print volfrac($i, :, 1)
set $i=$i+1
end其中volfrac(:,::)是一个fortran数组。我发现了一个错误:
gdb_script.gs:14: Error in sourced command file:
A syntax error in expression, near `<$end)'.发布于 2018-04-05 14:53:04
另一个答案完全没有抓住重点。提示是报告的错误:
gdb_script.gs:14: Error in sourced command file:
A syntax error in expression, near `<$end)'.提示是<$end),这意味着while语句中有语法错误。通过进一步的实验,如果其他人将来需要的话,我会发布我的结果:
set $ipx=0
set $end=32
while ($ipx .lt. 32)
print $ipx
print ro($ipx, 1)
set $ipx=$ipx+1
end关键是使用fortran语法进行比较($ipx .lt )。32)而不是通常的"c“语法($ipx < 32)。
发布于 2019-11-07 13:33:56
GDB新手(就像我自己一样)应该知道,除非您删除while和第一个大括号之间的空白,否则接受的答案不起作用。
而且,.lt.语法可能只适用于Fortran (https://sourceware.org/gdb/current/onlinedocs/gdb/Fortran.html)。由于该问题的标题不是专门针对Fortran开发人员的,因此所接受的答案可能会引起误解。
发布于 2020-01-06 09:04:22
set $i = 0
p $i++继续按Enter,这是我找到的最简单的逻辑之一
https://stackoverflow.com/questions/46454655
复制相似问题