我建立一个项目在Ubuntu中,我使用TinyXPath库TinyXml的一起解析以下XML:为什么TinyXPath在两个不同的类中调用时为同一个对象提供不同的结果?
<nodes>
<node attribute1="1" attribute2="2" />
<node attribute1="2" attribute2="3" />
...
<node attribute1="10" attribute2="11" />
</nodes>
要找出包含节点条目的数量,我使用的是:
TinyXPath::i_xpath_int(xml_root,"count(/nodes/node)")
显然,在一个对象中使用这个函数调用返回的实际节点数为10;但在另一个对象(一个不同的类类型)中使用它,它总是返回0.我已检查xml_root在两种情况下是否是相同的对象,并且两个对象具有相同的地址。打印内容给了我相同的XML。如果我使用TinyXML,我会得到正确的结果,我甚至可以访问所有的属性并获得正确的结果。下面的代码给出了正确的no_nodes:
for(node = xml_root->FirstChild(); node; node = node->NextSibling())
no_nodes++;
这里是怪异的部分。如果我在Windows 7上构建这个项目,它工作得很好。函数调用总是返回正确数量的节点。有没有人遇到过这种问题?
P.S .:我知道我没有给出关于这个问题的很多细节,但这是一个很大的项目,需要我花几天的时间来解释这一切。所以这只是在黑暗中拍摄而已。
难道你不能进入'i_xpath_int'并查看它出错的地方吗?此外,在一个平台/地点而不是另一个平台上工作的东西是未定义行为的强烈指标。 – Xeo
问题是,在Windows上,我的项目是一个服务,而在Linux上它是一个守护进程。我可以像其他程序一样调试守护进程吗?如果可以,我应该用什么来调试? – Nikopol
如果我没有弄错,你应该可以简单地将一个调试器附加到正在运行的进程中。 – Xeo