ForDebug: A Fortran library designed for debugging Fortran code, especially within pure procedures.
USE OF THIS LIBRARY IS NOT STANDARDS CONFORMING AND YOU CAN EXPECT THINGS TO BREAK IN PLENTY OF SITUATIONS. IT SHOULD BE USED ONLY FOR DEBUGGING PURPOSES
If you want to use ForDebug
as a dependency in your own fpm project,
you can easily include it by adding the following line to your fpm.toml
file:
[dependencies]
fordebug = {git="https://github.com/gha3mi/fordebug.git"}
To enable printing or writing within a pure procedure in Fortran, use the fordebug module.
use fordebug
! within pure procedures
call pwrite(message='hello!')
call pwrite(R0i32=n)
call pwrite(message='x = ', R0r32=10.0, format='(a,f7.3)', file='example/demo.txt', access='append')
- All arguments of
pwrite
are optional. - Data types are represented using the following conventions:
R0i32
,R0i64
,R0r32
,R0r64
,R0c32
,R0c64
for Rank 0 integer, real, and complex types.R1i32
,R1i64
,R1r32
,R1r64
,R1c32
,R1c64
for Rank 1 integer, real, and complex types.R2i32
,R2i64
,R2r32
,R2r64
,R2c32
,R2c64
for Rank 2 integer, real, and complex types.R0ch
for Rank 0 character.
ForDebug uses ForTmie as dependency. For measuring elapsed time within a pure procedure, utilize the fordebug module with time derived type.
use fordebug
type(timer) :: t
call ptimer_start(t)
! Perform your operations here
call ptimer_stop(t) ! Output: Elapsed time: 0.000 [s]
Clone the repository:
Clone the ForDebug
repository from GitHub using the following command:
git clone https://github.com/gha3mi/fordebug.git
Navigate to the cloned directory:
cd fordebug
To run demo
, execute the following command:
fpm run --example demo
The most up-to-date API documentation for the master branch is available
here.
To generate the API documentation for ForDebug
using
ford run the following
command:
ford ford.yml
Contributions to ForDebug
are welcome!
If you find any issues or would like to suggest improvements, please open an issue.
This project draws inspiration from https://github.com/plevold/fortran-debug-utils.