让gcc调用c操作之间的特定函数

时间:2012-07-03 19:01:50

标签: c++ c gcc assembly compiler-construction

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

我们的想法是通过回调某种取消例程来重新编译它们。

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

1 个答案:

答案 0 :(得分:0)

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

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

使用ptrace,您可以在另一个过程中逐步执行指令,就像在调试器中一样。

小心谨慎,因为这些是难以正确使用的机制,并且很容易在脚下射击。