首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从Fortran输出中的打印信息跟踪源代码中的行

Fortran是一种高级编程语言,广泛应用于科学计算和工程领域。在Fortran程序中,打印信息通常是通过PRINT语句或者格式化输入输出(如WRITE语句)来实现的。要从Fortran程序的输出中跟踪到源代码中的具体行,可以采取以下步骤:

基础概念

  • 打印语句:Fortran中的PRINTWRITE语句用于在屏幕上或文件中输出信息。
  • 源代码行号:源代码中的每一行都有一个唯一的行号,这对于调试非常有用。

相关优势

  • 调试信息:通过在代码中添加打印语句,可以输出变量的值或者程序执行的当前位置,从而帮助开发者定位问题。
  • 跟踪执行流程:打印语句可以帮助理解程序的执行流程,尤其是在复杂的逻辑结构中。

类型

  • 简单打印:使用PRINT语句直接输出变量或字符串。
  • 格式化输出:使用WRITE语句结合格式化控制输出,可以更精确地控制输出的格式。

应用场景

  • 调试程序:在开发阶段,通过打印关键变量的值来检查程序是否按预期工作。
  • 日志记录:在生产环境中,记录程序的关键执行步骤或状态,以便于问题追踪和分析。

遇到的问题及解决方法

如果在Fortran程序的输出中发现了问题,但是不确定是哪一行代码导致的,可以采取以下措施:

  1. 添加打印语句:在可疑的代码区域前后添加PRINTWRITE语句,输出当前行号和关键变量的值。
  2. 添加打印语句:在可疑的代码区域前后添加PRINTWRITE语句,输出当前行号和关键变量的值。
  3. 这里的__LINE__是一个特殊的变量,它会自动替换为当前代码行的行号。
  4. 使用调试器:现代Fortran编译器通常支持调试器,如gdb(GNU Debugger)。使用调试器可以设置断点,逐步执行代码,并查看变量的值和程序状态。
  5. 查看编译器警告和错误:编译器在编译过程中可能会提供关于潜在问题的警告或错误信息,这些信息通常会包含源代码的行号。
  6. 日志文件:将打印信息重定向到日志文件,这样可以保留更长时间的执行记录,便于后续分析。

示例代码

代码语言:txt
复制
PROGRAM trace_example
  INTEGER :: i, sum
  sum = 0

  DO i = 1, 10
     WRITE(*,*) 'i = ', i, ' sum = ', sum
     sum = sum + i
  END DO

  WRITE(*,*) 'Final sum = ', sum
END PROGRAM trace_example

在这个例子中,每次循环都会打印变量isum的值,以及当前的行号(如果使用__LINE__)。

参考链接

通过上述方法,你可以有效地从Fortran程序的输出中跟踪到源代码的具体行,从而更快地定位和解决问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

log日志打印异常栈具体信息

这是因为jvm自身存在着优化机制,但一个同样异常重复出现并被打印到log后,jvm可以不提供具体堆栈信息来提高性能。...关于这个具体信息我们可以官网上查到相关资料: http://www.oracle.com/technetwork/java/javase/relnotes-139183.html#vm The compiler...谷歌翻译如下: 服务器VM编译器现在为所有“冷”内置异常提供正确堆栈回溯。出于性能目的,当抛出这样异常几次时,可以重新编译该方法。...重新编译之后,编译器可以使用不提供堆栈跟踪预分配异常来选择更快策略。要完全禁用预分配异常,请使用以下新标志:-XX:-OmitStackTraceInFastThrow。...重启服务器时jvm被重新启动,这样再遇到同样Exception时就会打印出来,当然如果后续如果重复遇到同样Exception还是无法打印出具体异常栈信息

1K20
  • python单引号和双引号区别和用法_python打印输出语句

    python单引号和双引号区别 今天在码代码过程突然想到这个问题,于是上网浏览了一下,发现在python两种表达方式是没有区别的,两种表达方式都可以用来表达一个字符串。...但是这两种通用表达方式,除了可以简化大家开发,避免出错以外,还有一种好处,就是可以减转义字符使用,使程序看起来更加简洁,更清晰。所以这里简单给大家分享一下,并举例说明。...全家桶1年46,售后保障稳定 也可以不使用转义字符,利用双引号直接进行定义 my_str="I'm a student" 2.包含双引号字符串 假如我们要定义一个字符串my_str,其值为:Jason...,或者双引号,就可以非常有效避免转义字符使用,并且可以使代码看起来更加简洁清晰。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.8K20

    shell脚本打印所有匹配某些关键字符或前后各N

    在日常运维,经常需要监控某个进程,并打印某个进程监控结果,通常需要打印匹配某个结果以及其前后各N。...2)打印/opt/test中所有匹配"main is failed"及其前1 [root@mq-master02 ~]# cat /opt/test |grep "main is failed"...3)打印/opt/test中所有匹配"main is failed"及其后1 [root@mq-master02 ~]# cat /opt/test |grep "main is failed"...192.168.10.17 5)把/opt/test中所有匹配"main is failed"及其前1结果打印到/root/result.log,并加上时间 [root@mq-master02...以上脚本:不管main进程状态检查结果是否正常,都打印一个结果到/mnt/main_check_result.log文件, 其实检查结果正常时候,可以不必打印结果(即echo "****" > /

    2.1K10

    python subprocess运行子进程实时获取输出

    起因是这样,c++程序开发后 功能号和指令,校验需要人工去看对照二进制代码,量大还费力, 于是打算利用python 去调用 c++程序去校验指令, 首先要做就是用python 获取c++程序...printf() 或cout 输出; 环境linux python 3.8.x 以下代码实现,获取子程序输出 command='....linux shell指令,如果要用shell 指令如ls 要将false 变成true, 通过指定stderr=subprocess.STDOUT,将子程序标准错误输出重定向到了标准输出,以使我们可以直接标准输出同时获取标准输出和标准错误信息...p.poll() 返回子进程返回值,如果为None 表示 c++子进程还未结束. p.stdout.readline() c++标准输出里获取一....参考文章1 pythonsubprocess.Popen()使用 参考文章 2 python subprocess运行子进程实时获取输出

    10.4K10

    SUMO输出文件获得队列转移矩阵

    SUMO功能是很强大,不过可视化和后期期望结果多样性似乎就不太如人意了。 本次我们利用SUMOdump仿真输出文件来获取一个队列转移矩阵(lane change rate matrix)。...1.首先来看一下dump文件 在仿真配置文件output部分加入下面这样语句,就会生成dump文件 " /> </...导入之后,查看一下,发现dump中含有的信息还是很多,比如仿真时间、edge编号,lane编号、车辆编号等等,下图只是截取了部分。...文件生成csv文件截取了需要字段,同时做了一些数据清理工作。...4.excelVBA生成矩阵 把生成数据,按照上图,相同间隔相同空行放置。从左往右前两列为python导出cl.csv数据,要把列名删除。H列就是生成lane.csv数据。

    1.9K30

    零学习python 】05. Python输出和输入

    一、普通输出 生活输出” 软件图形化界面输出 python变量输出 print('hello world') 二、格式化输出 格式化操作目的 比如有以下代码: print...%G %f和%E简写 三、换行输出输出时候,如果有\n那么,此时\n后内容会在另外一显示。...print("1234567890-------") # 会在一显示 print("1234567890\n-------") # 一显示1234567890,另外一显示------- 四、练习...在控制台里输入以下信息。...看如下示例: password = input("请输入密码:") print('您刚刚输入密码是:%s' % password) 运行结果: 注意: input()小括号中放入是提示信息,用来在获取数据之前给用户一个简单提示

    12520

    【技巧】Java工程Debug信息分级输出接口及部署模式

    如何根据debug信息找出bug在哪 笔者程序,最大debug level是4,在关键位置上近乎每几行语句就会输出相应调试信息,展示相关计算细节。...(例如:Scheduler.java : 59输出还是正确,到了Scheduler.java : 70这一就出现了错误,那么可以基本确定bug就在Scheduler.java60-70之间)。...,用途是字符串抽取数,并计算方差。...首先,很明显,程序结构分为如下几个部分: 尝试标准输入读入一字符串 正则表达式分离数字 计算平均值 根据平均值计算方差 我们可以按照这几个基本模块,来设置level 1debug信息输出,就像这样...便于拆除 当需要将整个项目的debug信息输出全部拆除时,由于输出接口唯一,所以非常好找,可以通过文本正则替换方式一次性清除输出点。 此外,输出调试在多线程程序调试也有很大优势。

    90160

    Excel角度理解Power Pivot上下文

    Excel绝对引用和相对引用。 我们知道Excel中有绝对引用和相对引用。用$表示绝对引用。 例如 ? 这样代表是相对引用。 ?...这种就代表绝对引用,我们把相对引用公式下拉后,他会自动根据移动情况来进行转换;而绝对引用给公式在下拉后就不会进行变化。 2. 超级表列引用及列的当前行引用 ?...知识点: ,代表是多列, ;代表是多行。 例:{1,2,3;4,5,6}代表就是3列2矩阵表。 ? ?...那我们看下C1数据是{1;2;3;4;5},是一个数组,但是单元格就是一个,所以显示出来值也就是根据位置来显示,数据显示第1也就是1。 最后我们来看下E2。...了解了其基本原理,对于我们以后实际操作也会起到非常重要作用。 如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身工作效率。

    1.1K20

    C++如何获取终端输出行数,C++清除终端输出特定内容

    单纯使用C++ 进行编程时候,很多输出调试信息都是直接在终端输出,那么有的时候就会对终端输出信息有一定要求,那么如何进行定位终端输出信息到底输出到了哪一呢?...} // 获取当前标准输出流位置 void getpos(int* x, int* y) { CONSOLE_SCREEN_BUFFER_INFO b; // 包含控制台屏幕缓冲区信息..."终端输出第二内容;" << endl; cout << "终端输出第三内容;" << endl; getpos(&x, &y); //记录当前终端输出位置 setpos(0, 2);...// 回到坐标(0,2)位置进行标准输入输出 (第三第一个字节位置) cout << " "; // 在原本存在内容情况下,清空原本行内容 setpos(0, 2); // 回到坐标...(0,2)位置进行标准输入输出 cin >> x; setpos(x, y); //回到记录位置 return 0; } 通过上面的代码demo就能够实现终端清空某一特定内容操作了,快来尝试一下

    4K40

    IdeaTomcat控制台输出信息中文乱码解决方法

    问题描述 Tomcat在IDEA控制台输出中出现如下问题,如图: 2. 原因分析 IDEA编码与Tomcat编码不一致导致。 3....> 编辑器 > 文本编码(汉化IDEA) File > Settings > Editor > File Encoding 将下图中三处编码修改为UTF-8,如下: 编辑VM选项 在菜单中找到帮助编辑...VM options选项,Help > Edit Custom VM Options,如图: 在行末尾加入一: -Dfile.encoding=UTF-8 修改Tomcat编码 找到本地Tomcat...文件夹所在位置,依次打开Tomcat目录下 config > logging.properties,使用记事本打开,Ctrl + F 搜索 ConsoleHandler.encoding,看是否是UTF...-8,不是的话修改或添加一: java.util.logging.ConsoleHandler.encoding = UTF-8 重启IDEA 成功解决乱码问题。

    2.4K31

    VBA小技巧05:将数据打印在VBE立即窗口

    这是一个很简单技巧,但有时可能会给你代码调试带来一些方便。...通常,在编写代码时,我们会在其中放置一些Debug.Print语句,用来在立即窗口中打印程序运行过程一些变量值,了解程序运行状态。...一般情况下,Debug.Print语句每运行一次,就会将要打印数据输出到不同,如下图1所示。 ? 图1 那么,我们能不能将这些数据打印在同一呢?...将数据打印在同一,更方便查看结果,特别是有很多数据要打印时更是如此。 其实很简单,在Debug.Print语句中要打印变量后面加上一个分号就可以了,如下图2所示。 ?...图2 可以看到,在立即窗口同一输出了结果。这样,在立即窗口显示不下数据时,就不需要我们滚动向下查看数据了。对于数据不少、也不多情况,可以试试!

    5.4K20

    使用PacketSifterpcap筛选出有价值信息

    关于PacketSifter PacketSifter这款工具旨在帮助广大研究/分析人员捕捉到数据包文件(pcap)筛选出其中有价值或值得分析流量数据。...IP地址启用AbuseIPDB查询; -h:打印帮助信息; -i:输入文件【必须】; -r:解析pcap主机名; -v:针对SMB/HTTP对象启用VirusTotal查询; VirusTotal整合...VTInitial.sh正常输出如下图所示: 使用-v参数运行PacketSifter以针对导出HTTP和SMB对象启用VirusTotal查询。...成功执行后VTInitial.sh输出结果如下图所示: AbuseIPDB整合 PacketSifter可以针对DNS A记录IP地址执行IP地理位置查询或IP名声查询。...成功执行后AbuseIPDBInitial.sh输出结果如下图所示: 工具使用样例 root@ubuntu:~# .

    1.2K10

    【Android 返回堆栈管理】打印 Android 当前运行 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 在相同 Stack 不同 Task

    文章目录 一、打印 Android 当前运行 Activity 任务栈信息 二、Activity 任务栈信息分析 三、Activity 在相同 Stack 不同 Task 情况 一、打印 Android...当前运行 Activity 任务栈信息 ---- 使用如下命令 , 打印 Android 手机 Activity 栈 : adb shell dumpsys activity activities..., 相同应用 , 打开 Activity , 其 Activity 都在同一个任务栈 ; 三、Activity 在相同 Stack 不同 Task 情况 ---- 默认状态下 , 同一个应用启动两个...Activity 都在相同 Stack 相同 Task , 但是如下情况会出现 Activity 在相同 Stack 不同 Task ; 参考 【Android 应用开发】Activity...singleTask 启动模式 , 则新启动 Activity 放在另一个 Task ; 注意 : 两个 Activity 虽然在不同 Task 任务 , 但还是在相同 Stack 栈

    5.8K10

    WordPress 中一代码即可控制函数输出并存到变量

    假设我们有个函数 echo_something,名字即可知道,这个函数通过 echo 输出一些东西,如果这时候,我们希望不要输出,而是将结果存到某个变量,这时候我们就要使用到 PHP 输出缓存控制...,一般来说是这样处理: ob_start(); echo_something(); $var = ob_get_clean(); 这样做没什么问题,如果下次我们又有一个函数 echo_otherthing...,然后又要通过输出缓存控制来处理,有点麻烦,所以我写了一个高阶函数,只要传递函数名和参数,程序就会自动获取输出值: function wpjam_ob_get_contents($callback,...$args){ ob_start(); call_user_func_array($callback, $args); return ob_get_clean(); } 调用时候也非常简单,...echo_something'); 如果有参数: wpjam_ob_get_contents('echo_something', $arg1, $args2...); 该功能已经整合到 WPJAM Basic 插件

    42620
    领券