0

我正在尝试为单线程程序制作看门狗。问题是,我们运行了一些外来的 so/dll(代码可用),这意味着我们在那里传递了控制权。

我们的想法是通过一些回调来重新编译这些,以某种取消例程。

是否可以让 GCC 在此编译的外部代码中调用 C 事务或 asm 事务之间的一些回调函数?

4

1 回答 1

0

我要建议的内容不涉及编译器,但这听起来像一个问题,您可以在运行时使用 POSIX 信号或ptrace...

使用信号可以中断当前上下文,类似于在内核模式下使用 IRQ 会发生的情况。您将不得不担心“信号安全”(例如:您的处理程序无法使用malloc,因为它可能会malloc在其数据结构处于不确定状态时自行中断。)

您可以像在ptrace调试器中一样单步执行另一个进程中的指令。

小心行事,因为这些机制很难正确使用,而且很容易击中自己的脚。

于 2012-07-03T19:08:45.630 回答