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

问题描述 投票:0回答:1

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

这个想法是通过一些回调来重新编译它们,以取消例程。

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

c++ c assembly gcc
1个回答
0
投票

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

ptrace
...

解决的问题

使用信号,您可以中断当前上下文,类似于内核模式下使用 IRQ 发生的情况。 您将不得不担心“信号安全”(例如:您的处理程序无法使用

malloc
,因为当其数据结构处于不确定状态时,它可能会中断
malloc
本身。)

使用

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

小心行事,因为这些机制很难正确使用,而且很容易搬起石头砸自己的脚。

© www.soinside.com 2019 - 2024. All rights reserved.