我想调试一个运行多个TCP服务器线程的C程序。我不能设置一个复杂的调试工具,因为我必须在嵌入式linux(忙碌的盒子)中进行调试。我希望它能原生支持gdb。
所以我从gdb开始。一旦我输入run,服务器似乎在后台运行,但gdb返回提示和"Program received signal SIG64 (Real-time event 64)“消息(我猜与pthread有关)。我知道这一定是因为main被分成了几个线程。但是我不知道如何调试它。任何起点都会很有帮助。
另外,有没有其他的“跟踪”,比如调试器,我可以使用很小的内存?
请帮帮忙
我正在使用gdbserver从嵌入式设备进行调试:
./gdbserver HOST:5000 /home/test_app
在我的PC中,我以这种方式执行gdb:
arm-none-linux-gnueabi-gdb test_app
一旦应用程序开始执行,我就会收到想要调试的Segfault,但是不可能知道是哪一行产生了它:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 715]
0x31303030 in ?? ()
(gdb) bt
#0 0x31303030 in ?? ()
#1
我是Windows开发人员,熟悉Visual社区。现在,我开始在嵌入式设备(Raspberry Pi,C.H.I.P)和Pi上为Linux开发。
我发现Visual有两个用于Linux开发的选项:
VisualGDB -用于交叉编译和远程调试的VisualGDB扩展,但是对于我当前的预算来说,它的开销太大了。
全新的微软扩展: Visual C++ for IoT Development和Visual C++ for Linux,但它们是错误的,它们在每次构建中复制每个文件,并且很难配置"Linux“(没有完全的IoT/cmake支持,必须在远程机器上使用绝对包含路径),而且I
我有一个linux嵌入式系统(在对它进行主动开发时)将其根文件系统挂载为从我的ubuntu盒导出的nfs共享。所以要特别清楚的是:嵌入式linux是nfs客户端,我的ubuntu框是nfs服务器。我对执行实际nfs安装的嵌入式系统没有太多的控制。
当我升级到ubuntu 17.10时,我发现这已经不能用了。
经过多次调试后,我想我把这个问题定位在协议版本错配上:当我用wireshark嗅探流量时,我发现嵌入式系统用旧的协议版本2发送NFS数据包,但是下面是我在我运行的ubuntu盒上得到的信息
$ rpcinfo -p localhost
program vers proto port