首页
学习
活动
专区
工具
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程序的输出中跟踪到源代码的具体行,从而更快地定位和解决问题。

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

相关·内容

【Python系列】Python中打印详细堆栈信息的技巧

使用traceback模块 traceback模块是 Python 标准库中专门用于处理异常堆栈跟踪的工具。它提供了丰富的函数来获取、格式化和打印异常信息。...1.1 traceback.print_exc() 当程序抛出异常时,traceback.print_exc()函数可以直接打印异常信息和堆栈跟踪,无需手动处理异常对象。...在异常处理中打印堆栈 在except块中,除了直接使用traceback模块的函数外,还可以结合print函数来打印堆栈信息。这种方式更加灵活,可以根据需要定制输出内容。...定制输出 你可以根据需要定制输出格式,比如添加额外的错误信息或者高亮显示某些关键部分。...堆栈信息的高级应用 除了基本的堆栈信息打印,还可以结合其他工具和技术来提高错误追踪的效率。 4.1 集成调试器 在某些情况下,直接打印堆栈信息可能不足以解决问题。

9710

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

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

1K20
  • 《LSTM:视频目标跟踪中时间序列信息的高效利用者》

    LSTM的核心在于其门控机制,包括遗忘门、输入门和输出门。遗忘门决定了从记忆细胞中遗忘多少过去的信息。...在视频目标跟踪中,随着视频帧的不断推进,一些早期帧中的目标信息可能不再对当前跟踪有帮助,遗忘门可以根据当前的输入和之前的隐藏状态,决定是否丢弃这些信息,从而避免无关信息的干扰。...输出门控制着从记忆细胞中输出多少信息到隐藏状态,进而影响模型的预测结果。它根据记忆细胞的状态和当前的输入,决定哪些信息对于当前的目标跟踪是最关键的,并将这些信息输出。...例如,在复杂的背景下,输出门可以突出目标的关键特征,抑制背景噪声的干扰,从而更准确地预测目标的位置。此外,LSTM的细胞状态作为信息的主要载体,允许信息跨越多个时间步骤传递。...通过这种方式,LSTM能够充分利用视频中的时间序列信息,对目标进行连续、准确的跟踪。

    10010

    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

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

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

    1.9K30

    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 python中的subprocess.Popen()使用 参考文章 2 python 从subprocess运行的子进程中实时获取输出

    10.5K10

    【从零学习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()的小括号中放入的是提示信息,用来在获取数据之前给用户的一个简单提示

    13220

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

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

    90560

    从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

    Idea中Tomcat控制台输出信息中文乱码的解决方法

    问题描述 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.8K31

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

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

    5.5K20

    【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.9K10

    使用PacketSifter从pcap中筛选出有价值的信息

    关于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

    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 插件中,

    42820
    领券