0

我一直在把头撞到墙上,我希望有人能对下面的代码可能出现的问题提供一些建议。

我有一个项目,我正在 Linux 上的 MonoDevelop 4.0.9 中使用 Mono 3.0.7 开发,该项目的目标是 .NET 3.5。

我需要处理一个 XML 文件,所以我想使用 Linq to XML 来更轻松地处理 XML 文件。我在生成 XML 并将其写入文件时没有任何问题。但是,当我尝试从文件中读取内容时,Mono 因 SIGSEGV 错误而崩溃。

例如,我想尝试这样的事情:

//Load the document
XDocument indexFile = XDocument.Load(indexFilePath);

foreach (XElement acctElement in indexFile.Descendants("Account"))
{
    AcctCls acct = new AcctCls(acctElement.Attribute("AcctID").Value);
    AcctsList.Add(acct);

    foreach (XElement regionElement in acctElement.Descendants("Region"))
    {
        RegionCls region = new RegionCls(regionElement.Attribute("Region").Value);
        acct.RegionsList.Add(region);
    }
}

我尝试使用 .NET Framework 运行它,它似乎运行良好。但是,当我使用 Mono 运行它时,我收到以下错误消息:

    堆栈跟踪:
      在 <未知> <0xffffffff>
      ...我自己的图书馆...
      在(包装器运行时调用) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff>

    本机堆栈跟踪:

        /usr/bin/mono() [0x4ae331]
        /usr/bin/mono() [0x503b8b]
        /usr/bin/mono() [0x4226b2]
        /usr/lib/libpthread.so.0(+0xf830) [0x7f4f68629830]
        /usr/bin/mono() [0x4d00d9]
        /usr/bin/mono() [0x4d5049]
        /usr/bin/mono() [0x4d5741]
        /usr/bin/mono() [0x4d583f]
        /usr/bin/mono() [0x4d67b5]
        /usr/bin/mono() [0x4d75fc]
        /usr/bin/mono() [0x4caeea]
        /usr/bin/mono() [0x4cb03e]

    ==================================================== ================
    执行本机代码时获得 SIGSEGV。这通常表明
    单声道运行时或本机库之一中的致命错误
    由您的应用程序使用。
    ==================================================== ================

当我做这样简单的事情时,我什至得到同样的错误:

    IEnumerable acctsList = indexFile.Descendants("Account");

    foreach(acctsList 中的 XElement acctElmnt)
    {
        字符串测试 = acctElmnt.Attribute("AcctID").Value;
    }

我尝试将 XMLReader 放在 using 语句中并将 XMLReader 传递给 XDocument.Load 方法,但这也无济于事。我不知道这是否相关,但这是在我调试代码并单步执行时发生的。

我已经在谷歌上搜索了几个小时,绞尽脑汁尝试一切,但我不知道如何让它发挥作用。Mono 网站说它支持所有 Linq to XML 和我正在阅读的各种论坛和网站上的其他人似乎可以正常工作,所以我想知道我错过了什么。有人可以帮忙吗?

4

1 回答 1

0

在玩了一段时间后,我终于发现问题与尝试调试 LINQ to XML 语句有关。具体来说,每次我尝试进入 LINQ to XML 语句时似乎都会发生这种情况。如果我不进入该语句,并且当我在没有调试的情况下正常运行应用程序时,LINQ to XML 工作正常。我认为问题可能与无法加载我上面评论中提到的符号有关。

于 2014-02-07T16:35:12.167 回答