我有一个程序使用gloox库连接到xmpp服务器。如果我直接运行程序,连接总是成功。但是,该程序的CPU使用率很高。所以我转向valgrind寻求帮助。但是如果我用valgrind(--tool = callgrind)运行程序,连接总是超时。我不得不承认我是valgrind的新手,但为什么会这样呢?在valgrind中运行程序时的连接超时
1
A
回答
0
Valgrind对已执行代码进行了大量转换,使其运行速度比本机慢10-50倍。所以很可能连接超时。您可以使用strace下的异形程序运行Valgrind,以通过错误代码找到此连接。
0
如果你原来的问题是一个gloox的高CPU,我几乎可以肯定你的程序每10毫秒轮询新的xmpp消息。 例如,用recv(-1)
而不是recv(10)
运行程序。
0
后,我遇到了类似的问题和额外的调试,它在解析XML的XMPP节时归结为一个问题。 在我们的例子中,问题出现在使用使用long2string的util.h函数int2string的xpath解析器中。
在正常执行
int len = (int)(log((double)(10))/log((double) 10)) + 1;
给出2,但下的valgrind给1和突破都记录下来。
我们更换功能
static inline const std::string int2string(int value)
{
return long2string(value);
}
通过
#include <sstream>
static inline const std::string int2string(int value)
{
/* ADDON*/
//when we call long2string, it does weird cmath log stuff and with computer precision,
//the result may be different from an environnement to another. eg: when using valgrind
std::ostringstream s;
s << value;
return s.str();
/* ADDON */
//return long2string(value);
}
相关问题
- 1. 在node.js中运行应用程序时,连接超时错误
- 2. spring-boot jar:只有在运行cron程序时连接超时
- 3. 如何在Valgrind中运行我的程序时进行调试?
- 4. 在valgrind下运行的程序中断时线程栈回退
- 5. 从android studio在设备上运行应用程序时的连接超时
- 6. 从命令行运行时http连接超时
- 7. Sql远程连接超时
- 8. 远程MySQL连接超时
- 9. 连接超时
- 10. 连接超时
- 11. SMO中的连接超时
- 12. java中的连接超时?
- 13. javax.xml.transform.TransformerException:com.sun.org.apache.xml.internal.utils.WrappedRuntimeException:连接超时:连接
- 14. 从PowerShell运行程序超时
- 15. get java.net.SocketTimeoutException:运行视觉示例代码时连接超时
- 16. AlertManager在Openshift中运行时不能发送邮件(错误:getsockopt:连接超时)
- 17. 在运行时更改BIRT超链接
- 18. MySQL连接超时
- 19. java.net.ConnectException:连接超时
- 20. SqlClient连接超时
- 21. 连接超时Android
- 22. file_get_contents - 连接超时
- 23. websockets连接超时
- 24. MySQL连接超时
- 25. mysql.data.dll连接超时
- 26. SSH连接超时
- 27. ssh连接超时
- 28. Zookeeper:连接超时
- 29. MySQL连接超时
- 30. OkHttp连接超时
Valgrind是由它的性质缓慢。连接上的超时值是多少?这是不可能的,但可以想象,你可能会击中它。游戏中可能还有别的东西。你有没有尝试tcpdump来检查引擎盖下发生了什么? – Flexo