CLion教程-附加到进程
CLion提供了一种将调试器附加到本地和远程进程的方法。
对于C/C++应用程序,您可以使用GDB或MSVC LLDB(在Windows上)、LLDB(在macOS上)以及Linux上的GDB和LLDB附加到进程。在适用的情况下,还可以使用其他语言的调试器(例如Python调试器)。
如果您想调试可以从CLion启动的程序,最好的方法是启动本地调试会话。
Ubuntu的先决条件
在Ubuntu和一些其他Linux发行版上,您可能会在首次尝试附加到进程时收到ptrace:Operation not permitted错误消息。请执行以下操作之一:
要暂时禁用此限制,请输入以下命令:
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
要永久禁用此限制,请打开/etc/sysctl.d/10-ptrace.conf文件以进行编辑,并将
kernel.yama.ptrace_scope = 1
一行更改为kernel.yama.ptrace_scope = 0
。- 要立即应用更改,请输入上述命令
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
。 - 或者,运行
sudo service procps restart
或重新启动系统。
- 要立即应用更改,请输入上述命令
附加到进程
- 按CtrlAltF5或从主菜单中选择Run | Attach to Process。
在“附加到进程”中,显示正在运行的进程列表。
- 对于每个进程,您可以找到可执行文件名称和进程ID,启动它的用户,可用的调试器以及用于启动的命令。
- 您可以将进程显示为列表或树,并按名称搜索特定进程:
- 使用下拉菜单按调试器类型筛选进程列表:
- 您还可以通过设置“仅显示我的进程”来筛选列表:
- 切换到SSH选项卡以查看远程进程列表。请务必事先配置带有SSH凭据的远程工具链。
- 在Windows上,切换到WSL选项卡以打开WSL进程列表。您将能够使用WSL GDB调试器(如果您的项目中配置了至少一个WSL工具链)附加到它们。
您可以附加到以管理员权限启动的远程进程。
- 然后,按照CLion中通常的调试方式继续进行调试(设置断点、逐步执行、暂停和继续进程、评估表达式等)。
如果您附加的进程不提供调试信息,将无法使用断点,并且将在反汇编视图中执行逐步操作。
从进程中分离
从远程进程分离的过程与停止调试会话的过程相同。但请注意,当您分离时,调试会话关闭,但进程继续运行。
- 单击主工具栏上的停止按钮,或在调试工具窗口中单击停止按钮。
- 或者,单击主工具栏上的停止按钮,然后选择要关闭的会话。