在无法在中找出我的应用程序中发生了什么之后,我尝试在我的pc上复制它,使用valgrind来查找内存/多线程问题。我在很多地方看到过这样的情况:
==769== Possible data race during write of size 4 at 0xACD3ADC by thread #13
==769== Locks held: none
==769== at 0x4C36067: memset (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==769== by 0x4E4570D: pthread_cre
我已经在我的项目中使用Qt开发了一段时间了,我们开始转向更面向线程的设计。在将一些GL渲染小工具移动到其他线程时,我发现了一些非常奇怪的行为。如果在接受用户输入的小部件(如QTextEdit)获得焦点之前,GL小部件开始从另一个线程(Boost线程或QThread)更新,我会得到如下的XCB崩溃:
[xcb] Too much data requested from _XRead
[xcb] This is most likely caused by a broken X extension library
[xcb] Aborting, sorry about that.
hypnotize
我有一个多线程Python应用程序,它调用PyEnchant。我不是Python专家,大部分代码来自第三方。我所做的是添加代码以从多线程应用程序调用PyEnchant。由于我做了更改,应用程序运行了不同的时间长度,然后崩溃。我在Ubuntu 12.04上运行它。我得到的错误如下:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffc5ffd700 (LWP 6858)]
0x00007ffff4424854 in ?? () from /usr/lib/libenchant.so.1
我编写了一个模块,用于定期将一些实时数据转储到XML文件中。最后,我使用xmlSaveFormatFileEnc( )保存文件。
但是,我正在使用API xmlSaveFormatFileEnc( )获得与val差内的内存泄漏报告。
泄漏摘要如下,
==8355== 261,507,768 bytes in 506,798 blocks are definitely lost in los s
record 109 of 109
==8355== at 0x402BE68: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-x86-linux
我想调试一个运行多个TCP服务器线程的C程序。我不能设置一个复杂的调试工具,因为我必须在嵌入式linux(忙碌的盒子)中进行调试。我希望它能原生支持gdb。
所以我从gdb开始。一旦我输入run,服务器似乎在后台运行,但gdb返回提示和"Program received signal SIG64 (Real-time event 64)“消息(我猜与pthread有关)。我知道这一定是因为main被分成了几个线程。但是我不知道如何调试它。任何起点都会很有帮助。
另外,有没有其他的“跟踪”,比如调试器,我可以使用很小的内存?
请帮帮忙