尝试在archLinux64下跟踪内存分配错误

时间:2014-02-10 00:55:45

标签: c linux windows malloc

我正在努力让midi编译器PMML再次运行。是的,它本身就是一种编程语言,可以编译标准的midi文件。简而言之,在Windows下使用cygwin和minGW,最新版本使程序正常运行之后,我想继续使用linux系统来实现它。

然而,在将其移至Linux系统之前,必须应用一些初始补丁。

  1. 将系统功能的外部移出项目中的本地头文件,以消除类型冲突。
  2. 通过包含系统头文件,stdlib.h,string.h以及在需要它的情况下替换它们,errno.h。
  3. 还用strerror(errno)替换了这个构造sys_errlist [errno]。这使得程序包可以在Windows下完全编译,并且可以正常工作。
  4. 我选择了Arch 64位,在Windows 7 64位的VMWare播放器6.0.2下运行。 当我将源移动到arch时,它们编译得很好,但在测试套件中失败了,给出了段错误。随后用gdb探讨了一下,不知怎的,一个函数正在变坏记忆,但我不能为我的生活弄清楚为什么它这样做。据我所知,Windows和Linux以不同的方式分配内存,但只是看不出问题出现的原因。任何帮助跟踪这一点将不胜感激。 我正在与之合作的消息来源。 https://dl.dropboxusercontent.com/u/3051632/pmml-0.2p2.tar.gz

    谢谢!

    修改。似乎在看了一段时间的代码后,答案只是让我脸红了......其中一个非常简单的事情。似乎在函数__get_expression()中,程序发生了分裂,它崩溃的原因是...一个简单的未赋值变量问题,编译没有捕获。现在,找出要传递给函数的内容以使其正常工作。

1 个答案:

答案 0 :(得分:0)

尝试使用valgrind 。它是跟踪内存问题的最佳linux工具。

您所要做的就是通过valgrnid运行您的应用程序:

# valgrind --leak-check=full --show-reachable=yes ./your_app