lldb 是否与 fortran 一起工作?
Is lldb working with fortran?
我正在尝试在 Mac OS 10.12.5 系统上使用 lldb
为 Fortran 程序设置断点。我有
program badcall
integer a,b
a=2
b=3
write(*,*) a, b
end
我(必须)使用英特尔编译器进行编译。
ifort -g badcall.f90 -o badcall
然后我 运行 和 lldb
做
breakpoint set -f badcall.f90 -l 5
程序正常停止
Process 59474 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x0000000100000f35 prova`MAIN__ at badcall.f90:6
3 a=2
4 b=3
5
但是,如果我随后尝试打印变量 b
,我什么也得不到
(lldb) p b
(lldb) print b
(lldb) q
我是不是漏掉了什么? lldb
真的可以用来调试 Fortran 代码吗?
似乎 lldb 不支持 Fortran,但是 :( 你将不得不使用 gdb:
curl "http://ftp.gnu.org/gnu/gdb/gdb-8.0.tar.gz" -o gdb-8.0.tar.gz
tar zxf gdb-8.0.tar.gz
cd gdb-8.0
./configure
make
确保对 gdb 进行代码签名!按照此处的说明进行操作:
https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html
你应该可以开始了
gfortran -g -o fort_sample ./fort_sample.f90
gdb ./fort_sample
(gdb) list
1 program badcall
2 integer a,b
3 a=2
4 b=3
5
6 write(*,*) a, b
7 end
(gdb) break 6
Breakpoint 1 at 0x100000e0e: file ./fort_sample.f90, line 6.
(gdb) run
...
...
badcall () at ./fort_sample.f90:6
6 write(*,*) a, b
(gdb) print a
= 2
(gdb) print b
= 3
(gdb)
我正在尝试在 Mac OS 10.12.5 系统上使用 lldb
为 Fortran 程序设置断点。我有
program badcall
integer a,b
a=2
b=3
write(*,*) a, b
end
我(必须)使用英特尔编译器进行编译。
ifort -g badcall.f90 -o badcall
然后我 运行 和 lldb
做
breakpoint set -f badcall.f90 -l 5
程序正常停止
Process 59474 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x0000000100000f35 prova`MAIN__ at badcall.f90:6
3 a=2
4 b=3
5
但是,如果我随后尝试打印变量 b
,我什么也得不到
(lldb) p b
(lldb) print b
(lldb) q
我是不是漏掉了什么? lldb
真的可以用来调试 Fortran 代码吗?
似乎 lldb 不支持 Fortran,但是 :( 你将不得不使用 gdb:
curl "http://ftp.gnu.org/gnu/gdb/gdb-8.0.tar.gz" -o gdb-8.0.tar.gz
tar zxf gdb-8.0.tar.gz
cd gdb-8.0
./configure
make
确保对 gdb 进行代码签名!按照此处的说明进行操作:
https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html
你应该可以开始了
gfortran -g -o fort_sample ./fort_sample.f90
gdb ./fort_sample
(gdb) list
1 program badcall
2 integer a,b
3 a=2
4 b=3
5
6 write(*,*) a, b
7 end
(gdb) break 6
Breakpoint 1 at 0x100000e0e: file ./fort_sample.f90, line 6.
(gdb) run
...
...
badcall () at ./fort_sample.f90:6
6 write(*,*) a, b
(gdb) print a
= 2
(gdb) print b
= 3
(gdb)