linux – 在ADA中打开文件的分段错误
我必须将一些用ADA编写的遗留软件从Windows移植到Linux.程序编译正常,但在执行时以分段错误终止. 当程序试图打开文件(文件存在;)时发生段错误.奇怪的是,该程序成功地在执行早期打开另一个文件而没有错误.两个文件都是二进制文件. 使用gdb逐步执行程序,我可以追踪执行的最后一行
它在a-direio.adb第167行中定义. 如何进一步调查故障原因? DIO.Open的参数值看起来没问题(它们与上一次成功调用DIO.Open相同,但文件名除外).任何提示都表示赞赏. 编辑 这是最终调用DIO.Open的代码:
其中ADA_File_IO声明为
GNL_Universal_Representation.An_Item解析为
和DB_Mode_To_File_Mode(The_Mode)解析为Ada_File_IO.In_File. 编辑(2) 这是带有一些文件名的gdb输出(由Brian建议)
最佳答案
我看到你正在使用多线程程序.使用gdb时,请注意’bt’不会非常有用,因为它只显示一个线程(如果这是主线程或当前线程,我无法记住).
相反,使用以下内容:
要么
此外,使用strace -f -e trace = file your_program args将有助于确定故障是在系统调用open之前还是之后. 了解您正在使用的编译器版本以及用于构建它的选项(特别是如果禁用了任何警告)将非常有用. 文件名编码是否比US-ASCII更多或更少? (编辑:鲜蔬坊站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – XMonad:dmenu在启动时没有启动/生成
- linux – Systemd – 在ExecStopPost中检测服务是否退出而没
- Linux:将电子邮件发送到另一个地址而不是/ var / spool /
- 从头开始构建linux时出现glibc错误
- linux – 如何在所有文件和所有目录中递归地找到一个单词
- 当curl尝试解析主机时,如何更改php curl超时(curl err_no 6
- php 7.2 安装 mcrypt 扩展
- linux多个https协议配置
- LINUX教程:CentOS 7 安装sklearn gcc: error: ‘-Qunused-
- linux – 与nasm和ld的汇编/链接问题