使用 - g 选项进行编译和链接。
可以通过一两个步骤来完成此操作。
使用 -g 一步完成编译和链接:
demo% f95 -o my_program -g a1.f a2.f a3.f |
或分步完成编译和链接:
demo% f95 -c -g a1.f a2.f a3.f demo% f95 -o my_program a1.o a2.o a3.o |
对名为 my_program 的可执行文件启动 dbx。
demo% dbx my_program Reading symbolic information… |
键入 stop in subnam 来设置简单断点,其中 subnam 是子例程、函数或块数据子程序的名称。
在主程序的第一个可执行语句处停止。
(dbx) stop in MAIN (2) stop in MAIN |
尽管 MAIN 必须全部为大写字母,但 subnam 大小写均可。
键入 run 命令,它会运行启动 dbx 时指定的可执行文件中的程序。
(dbx) run Running: my_program stopped in MAIN at line 3 in file "a1.f" 3 call mkidentity( twobytwo, n ) |
到达断点时,dbx 会显示一条消息,指出其停止位置(本例中为文件 a1.f 的第 3 行)。
要打印值,请键入 print 命令。
打印 n 的值:
(dbx) print n n = 2 |
打印矩阵 twobytwo,格式可能会有所不同:
(dbx) print twobytwo twobytwo = (1,1) -1.0 (2,1) -1.0 (1,2) -1.0 (2,2) -1.0 |
打印矩阵 array:
(dbx) print array dbx: "array" is not defined in the current scope (dbx) |
打印失败的原因是此处未定义 array,而只是在 mkidentity 中进行了定义。
要继续执行到下一行,请键入 next 命令。
继续执行到下一行:
(dbx) next stopped in MAIN at line 4 in file "a1.f" 4 print *, determinant( twobytwo ) (dbx) print twobytwo twobytwo = (1,1) 1.0 (2,1) 0.0 (1,2) 0.0 (2,2) 1.0 (dbx) quit demo% |
next 命令会执行当前源代码行并在下一行处停止。它将各次子程序调用按独立的语句来计数。
next 命令与 step 命令不同。step 命令会执行下一个源代码行或进入子程序的下一步。如果下一个可执行源代码语句是一个子例程或函数调用,则:
step 命令在子程序的第一个源代码语句处设置断点。
next 命令在调用后的第一个源代码语句处但仍在调用程序中设置断点。
要退出 dbx,请键入 quit 命令。
(dbx)quit demo% |