我想调试一个运行多个TCP服务器线程的C程序。我不能设置一个复杂的调试工具,因为我必须在嵌入式linux(忙碌的盒子)中进行调试。我希望它能原生支持gdb。
所以我从gdb开始。一旦我输入run,服务器似乎在后台运行,但gdb返回提示和"Program received signal SIG64 (Real-time event 64)“消息(我猜与pthread有关)。我知道这一定是因为main被分成了几个线程。但是我不知道如何调试它。任何起点都会很有帮助。
另外,有没有其他的“跟踪”,比如调试器,我可以使用很小的内存?
请帮帮忙
我的生产服务器上的Apache正在断断续续地故障。我在apache配置中启用了核心转储选项,并有几个转储核心文件。不幸的是,由于它是生产服务器,apache或加载的模块没有使用调试符号进行编译。据我所知,gdb没有调试符号就不能做很多事情。
我能否至少找出哪个模块导致seg故障,而不需要调试符号?如果是这样的话,是怎么做的?
更新下面是gdb回溯跟踪的输出
(gdb) bt full
#0 0xb7f1f832 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
No symbol table info available.
#1 0xb7be8
在Linux主机上的Python和windows主机上的Visual之间有一个基本的TCP/IP通信设置。windows主机似乎运行良好,作为测试,我将0发送到Linux机器,并将0打印到Visual调试控制台中。所有操作都很好,但是在Visual接收到响应并成功显示之后,它会冻结窗体,因此我不能再按另一个按钮。下面是代码的一个例子。
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Public Class Form1
Shared Sub Main()
Dim tcpClient A
我在gdb (7.1版)中收到以下消息:
[Thread debugging using libthread_db enabled]
和命令reverse-step
结果显示以下错误消息:
(gdb) reverse-step
Target multi-thread does not support this command
我现在正在调试一个串行代码,所以我绝对不需要多线程。我是否可以以某种方式将其关闭,以便获得最新的反向调试命令?此外,如果代码与OpenMPI并行化,则根本不需要多线程调试,对吧?
Edit:是否设置为编译标志,可以直接排除?