在 Mac OS 上使用 gdb 进行 Fortran 调试?

2023-12-09

我在使用 gdb 在 Mac OS Mountain Lion 上调试 Fortran 程序时遇到问题。当我调用

gdb (fortran executable name)

从终端,我收到以下消息:

This GDB was configured as "x86_64-apple-darwin"...Reading symbols for shared libraries.

warning: Could not find object file "/Users/fx/devel/gcc/ibin-462-x86_64/x86_64-apple-darwin11/libgfortran/.libs/backtrace.o"
- no debug information available for "../../../gcc-4.6.2-RC-20111019/libgfortran/runtime/backtrace.c". ... (an extremely long list of analogous warnings pop up for libgcc and libquadmath libraries) ...

基本上,gdb 正在路径(/Users/fx/...)中搜索一堆不存在的目标文件。

除此之外,调试器似乎工作正常。有谁知道我该如何解决这个问题?

附带说明一下,gdb 在 C 程序上运行良好。 C和Fortran编译器都运行流畅; gcc 包含在 Xcode 命令行工具中,而 gfortran 是从单独的源安装的(路径:/usr/local/bin/gfortran)。

我尝试阅读其他几个答案,但似乎没有人符合这个问题。


您可以将 lldb 与 Fortran 一起使用。举一个示例程序。

      PROGRAM test

      IMPLICIT NONE

      INTEGER                :: i
      INTEGER, DIMENSION(10) :: array

      DO i = 1, 10
         array(i) = i
      END DO

      END PROGRAM

您可以在 lldb 中运行它

$ lldb -- test
(lldb) target create "test"
Current executable set to 'test' (x86_64).
(lldb) b test.f:9
Breakpoint 1: where = test`test + 17 at test.f:9, address = 0x0000000100000eac
(lldb) run
Process 869 launched: '/Users/mark/Desktop/test' (x86_64)
Process 869 stopped
* thread #1: tid = 0xb5f5, 0x0000000100000eac test`test + 17 at test.f:9, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
    frame #0: 0x0000000100000eac test`test + 17 at test.f:9
   6          INTEGER, DIMENSION(10) :: array
   7    
   8          DO i = 1, 10
-> 9             array(i) = i
   10         END DO
   11   
   12         END PROGRAM
(lldb) c
Process 869 resuming
Process 869 stopped
* thread #1: tid = 0xb5f5, 0x0000000100000eac test`test + 17 at test.f:9, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
    frame #0: 0x0000000100000eac test`test + 17 at test.f:9
   6          INTEGER, DIMENSION(10) :: array
   7    
   8          DO i = 1, 10
-> 9             array(i) = i
   10         END DO
   11   
   12         END PROGRAM
(lldb) c
Process 869 resuming
Process 869 stopped
* thread #1: tid = 0xb5f5, 0x0000000100000eac test`test + 17 at test.f:9, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
    frame #0: 0x0000000100000eac test`test + 17 at test.f:9
   6          INTEGER, DIMENSION(10) :: array
   7    
   8          DO i = 1, 10
-> 9             array(i) = i
   10         END DO
   11   
   12         END PROGRAM
(lldb) c
Process 869 resuming
Process 869 stopped
* thread #1: tid = 0xb5f5, 0x0000000100000eac test`test + 17 at test.f:9, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
    frame #0: 0x0000000100000eac test`test + 17 at test.f:9
   6          INTEGER, DIMENSION(10) :: array
   7    
   8          DO i = 1, 10
-> 9             array(i) = i
   10         END DO
   11   
   12         END PROGRAM
(lldb) p array
(int [11]) $0 = ([0] = 1, [1] = 2, [2] = 3, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0, [10] = 0)
(lldb) 

有一点需要注意。 lldb 本身不理解 Fortran,但您仍然可以使用 C 等效语言。例如,如果您想检查 fortran 数组索引array(3)你需要使用 C 等效的

(lldb) p array[2]
(int) $1 = 3
(lldb)

任何具有 C 或 C++ 等效项的东西都可以工作。派生类型的行为类似于结构等...所有常规 lldb 命令都将起作用。您可以更改堆栈帧。您可以设置断点,可以执行指令等等......这一切都会起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Mac OS 上使用 gdb 进行 Fortran 调试? 的相关文章

随机推荐

  • 在 imageview 中显示来自 Intent 的 jpg 图像

    如何显示从 android intent action SEND in an imageview 用户从应用程序列表中选择我的应用程序来共享图像 图像是sent via intent我的活动打开了 但如何在图像视图中使用此图像 using
  • istio-proxy 访问日志是什么意思?

    我试图通过查看 istio proxy 访问日志 它记录每次访问 来对我的服务进行故障排除 但是 我找不到任何解释日志中每个条目含义的文档 例如 2018 12 20T11 09 42 302Z GET HTTP 1 1 200 0 614
  • C# 嵌套类序列化

    我正在尝试序列化订单的虚拟集合 其中每个订单都包含一个产品 该集合序列化良好 但订单内的示例产品属性被遗漏 订单领取 XmlRoot Orders public class OrderCollection ICollection
  • 上传文件抛出无方法签名异常(在 getFile() 方法中)

    我正在尝试上传文件并将其存储在文件中 这是 GSP 中的代码
  • 当轴标签分成多条线时会偏离中心

    我在用graph twoway scatter并添加我自己的ylabels 我经常有很长的标签并将它们分成多行 然而当我想要破解的时候却遇到了问题some标签超过两行 但不超过两行 当我这样做时 单行标签相对于它们的中心是偏离的tick标记
  • Laravel 如何使用 Eloquent 获取对象的行号?

    我想根据用户的创建日期了解用户的位置 我该如何使用 Eloquent 来做到这一点 我希望能够做这样的事情 User getRowNumber user obj 我想你想要 MySQL 解决方案 所以你可以这样做 DB statement
  • 选定的项目数据从表格到 ZK 中的文本框

    我正在开发一个小型 Web 应用程序 用于存储医院患者的数据 以便更多地了解 zk 及其令人惊叹的功能 这次我的目标是 当我选择一行 复选标记 时 我想将该行的数据 红色 获取到相应的文本框 蓝色 当我选择表的任何行时 这将起作用 也许这是
  • Python - CSV:具有不同长度行的大文件

    简而言之 我有一个 20 000 000 行的 csv 文件 它具有不同的行长度 这是由于陈旧的数据记录器和专有格式造成的 我们得到以下格式的最终 结果作为 csv 文件 我的目标是将此文件插入到 postgres 数据库中 我怎样才能做到
  • HomeAsUp 按钮在 Android 4.2.2 和 Appcompat 21.0.0 中无效

    我使用 Appcompat 21 中的工具栏而不是标准操作栏 一切都很顺利 除了HomeAsUp额外活动中的按钮不起作用 当我打开PrefsActivity 下面的代码片段 HomeAsUp按钮正常显示 一个向左的小箭头 当我单击按钮时 从
  • 如何调整 html canvas 元素的大小?

    我在 html 中静态定义了一个带有宽度和高度的画布元素 如果我尝试使用 JavaScript 动态调整其大小 设置新的宽度和高度 在画布的属性上或通过样式属性 我在 Firefox 中收到以下错误 未捕获的异常 异常 对WrappedNa
  • WINAPI - 设置组合框下拉列表的背景和文本颜色

    所以我尝试使用 Common Controls 和 WINAPI 设置 ComboBox 的背景和文本颜色 我确实设法设置了组合框本身的背景和文本颜色 但其下拉列表的颜色保持不变 这几乎就是我所做的 创建组合框时 我使用了CBS DROPD
  • 我需要一个 php 正则表达式来用另一个标签替换一个标签

    这是我需要能够做到的 我需要匹配以下标签 span text sample span 我需要用 html3 兼容标签替换 span 但保留中间的文本 替换后的最终标签应如下所示 u text sample u 我只是不擅长正则表达式 似乎无
  • ILMerge 替代方案,如何将应用程序的依赖 DLL 嵌入 EXE 文件中?

    如此处所述我试图将 dll 嵌入到 exe 应用程序中 以便只分发一个 exe 但是当我尝试在安装了完整 NET 4 的 xp 计算机上运行我的应用程序时 它只是崩溃而没有错误 我将以下代码放在主要方法 STAThread static v
  • 发布编译时 WCF .SVC Debug="true" 被忽略?

    默认情况下 SVC 文件包含 Debug true 我想知道如果您编译发布版本是否会忽略它 或者仍然使用调试符号进行编译 Ex Debug true属性在 ServiceHost仅当您将服务编写为inline svc 文件中的代码 或在 中
  • 如何在不同条件下选择同一字段两次并将结果显示为单独的字段

    我想用 C 创建一个表适配器 如下所示 我希望在不同的条件下在表中使用相同的字段两次 并且它必须显示为两个不同的字段 这是我的源表 来自AttendanceReg我需要的表Count每个学生的记录基于AttendStatus找出他们在的天数
  • 如何判断 Pandas 中的值是否随维度变化

    假设我有一些特定日期的客户数据 我想看看他们的地址是否已更改 超过那些日期 理想情况下 我想将发生更改的两列复制到新表中 或者只是获取总更改量的指标 所以 如果我有一张像这样的桌子 Date Customer Address 12 31 1
  • 如何获得倒排索引?

    我新使用 Spark 如何使用 Spark 获取 csv 文件的倒排索引 我有 csv 文件 df show id title tags closeddate 48702270 null null null 48702455 null
  • 使用 jQuery jsonp 跨域调用 ASP.NET Web 服务

    我的问题是已知问题并已讨论here and here 但即使在阅读并实施了建议的解决方案之后 我也无法完成这项工作 问题 Web 服务返回 xml 而不是 json
  • 阐明 Java 对 Unicode 的进化支持 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我发现 Java 对 char 和 codepoint 的区分很奇怪而且不合适 例如 字符串是字符数组或 字母表中出现的字母 与代码点相反 代码点可以是单个字母 也可能是复合或代理对 然而
  • 在 Mac OS 上使用 gdb 进行 Fortran 调试?

    我在使用 gdb 在 Mac OS Mountain Lion 上调试 Fortran 程序时遇到问题 当我调用 gdb fortran executable name 从终端 我收到以下消息 This GDB was configured