我正在为多线程应用程序编写小型调试程序。我的想法是运行目标,例如调试 100 纳秒,然后暂停并检查其内存。然而这(只是伪代码)
nanosleep(100); //sleep debuger for 100 nanosec and let a program run
kill(target_app_pid, SIGSTOP); //stop target app
不起作用,因为进程切换可能会在 nanosleep 之后立即发生,并且目标会根据需要运行更长时间。有没有办法给一个进程“定义”的时间片然后暂停它?我能想象的唯一解决方案是添加系统调用并修复调度程序以实现我所需要的,但这需要付出很大的努力和许多错误。也许为调试器进程设置“实时”优先级会有所帮助?它会是干净的解决方案吗?
也假设我可以检测目标应用程序的源代码。是否可以设置某种计时器并在一段时间(非常小且精确)后使整个过程休眠?