我有一个CLI应用程序,当结束时(发送Ctrl-C后)发生段错误。
在lldb中按下Ctrl-C自然会暂停执行。
然后我尝试:
(lldb)process signal SIGINT
(lldb)process continue
但这似乎并没有做任何事情来终止该应用程序。
还尝试过:
(lldb)process signal 2
调试器使用^C来中断目标进程,因此它默认不会将^C传递到目标进程。您可以使用"process handle"命令来更改此行为:
(lldb) process handle SIGINT -p true
process handle
并继续时,该SIGINT将被转发到进程。process status
获取调试程序的PID并使用平台shell直接向该进程发送SIGINT来生成SIGINT。(lldb) process status
(lldb) platform shell kill -INT {{PID from previous step}}
(lldb) continue
SIGINT
信号。获取被调试进程的进程 ID(使用 process status
命令可以查看),然后运行以下命令:kill -INT <pid>
从另一个终端执行。
platform shell kill -INT <pid>
。请注意,这与在lldb中运行^C或“process interrupt”不同,后者知道中断信号是为了实现中断,因此将被抑制。 - Jim Inghamplatform shell
命令执行,看起来好像什么都没有发生,但是一旦你继续执行,它就会立即再次停止以处理中断信号。 - Dyllon Gagnier
process handle SIGINT -s false
来禁用调试器停止。 - Siyuan Ren