- 主题:和工具作斗争
1、用CLion调试一个linux c++程序(root权限),启动debugee时,左下角经常出这个错误:
Error running 'xxx': UNAVAILABLE: io exception
无法运行被调试的程序。重启CLion也不行,要重启机器才行。
查这个错误信息,是一个io.grpc.StatusRuntimeException错误,估计还有个程序和CLion通信,需要重启那个程序。
2、用CLion和vscode调试一个x86_64 debug版的程序(musl gcc编译的),经常是在断点位置做step over的单步操作时,直接飞了,程序完全运行了,而不是停在下一行代码上。
vscode调用的我自己编译的gdb 12.1。
改用我编译的gdb 12.1直接调试,也是如此。
把CLion里自带的的gdb 12.1更换为其自带的lldb,step over不跑飞,会停在下一行,但是每次step over需要耗时几十秒,等于不能用这个单步功能,而且搞几次后会导致debugee进程退出。
但是换到aarch64上用gdb 12.1直接调试,step over又是正常的。
猜测问题出在gdb对DWARF信息的处理上,不过要定位还是挺麻烦的。
总的来说,linux的调试体验,比windows的MS debugger要差太多了
--
FROM 114.240.244.*
因为visual studio用习惯了,哈哈
虽然vi也用了很多年了,还是习惯用GUI的IDE来搞
【 在 philbloo 的大作中提到: 】
: Linux, c++, 何苦还用 clion。直接 vim + gdb。
:
--
FROM 114.240.244.*
没试过。猜测是不行。回头可以试试不用vscode,直接用lldb。
由于这个问题,估计得把开发环境切到arm64上来搞。
【 在 RunningOn 的大作中提到: 】
: vscode+lldb 有试过吗?
:
--
FROM 114.240.244.*
clion和vscode都在linux本地。
clion调试root权限程序,设置打个勾就行;
vscode的cppdbg插件目前不支持以root权限运行debugee,需要把调试器设置为一个shell脚本,然后脚本里用sudo启动gdb来调试,而且要把gdb放到/etc/sudoers里,防止sudo问root密码时失败。
#!/bin/sh
sudo /home/happy/gdb/bin/gdb $@
远程调试,可以一试
之前用vscode这么干过,从windows上远程搞macos上的。
vs也干过,但vs远程调试linux的不怎么成熟。
vscode没有vs的“break all”功能,是极其不爽的,之前喷过一次。
【 在 littleSram 的大作中提到: 】
: clion安装在Linux上吗?
: 有没有试过clion安装在mac或Windows上,然后远程调试Linux上的程序
: 曾经发现idea社区版在Linux上运行有问题之后,我就尽量避免直接安装在Linux上了,总觉得有坑,毕竟Linux环境太复杂了
--
修改:z16166 FROM 114.240.244.*
FROM 114.240.244.*
我记得用qtcreator调试时,在函数的最后返回的那句单步执行时,很容易跑飞,不是返回到调用者的下一句代码,而是程序直接全部运行起来了。
【 在 hothail 的大作中提到: 】
: 写qt的时候,用gdb
: 似乎单步就是极其慢
--
FROM 114.240.244.*
可以调试gdb本身,看看是为啥跑飞。不过这个需要熟悉gdb代码,有空再搞,哈哈
远程走的是gdb server,可能和gdb有差异,不过这个可能很小
【 在 littleSram 的大作中提到: 】
: 感觉如果用gdb直接本地调试如果都有问题的话,远程调试估计也不行
: 死马当活马医吧
: 要么换调试工具,要么编译的时候是不是加点参数
: ...................
--
修改:z16166 FROM 114.240.244.*
FROM 114.240.244.*
差点漏了这个,VisualGDB 5.6r9,有兴趣的可以试试。VS太强大,不过也是依赖gdb或者gdb server之类的。
8楼有破解版下载
https://www.armbbs.cn/forum.php?mod=viewthread&tid=111393&extra=
发现gdb的set step-mode on对单步跟踪影响大,默认是off,会跳过没有符号的函数。
--
修改:z16166 FROM 114.240.244.*
FROM 114.240.244.*