c - 如何在另一个进程中调用函数(C,Linux)

标签 c ipc embedded-linux

我正在调试应用程序 A,我发现当进程 A(应用程序 A)调用函数 foo() 时,该函数位于另一个进程 B 中。我的意思是,如果我在调用 foo() 之前杀死进程 B,则 foo () 输出未显示。我可以修改 foo() 代码,并在从应用程序 A 调用 foo() 时查看新的修改。两个应用程序都定义了 foo() 。我不知道如何实现这一点。编译时以正常方式执行调用:

....
foo(b);
.... 

最佳答案

gdb 或多或少可以为你做这件事。您只需要几个 gdb session ,每个进程一个(如果这些 session 位于嵌入式目标上,gdb-server 将提供帮助)。然后在方便的位置中断到进程之一(使用断点、脚本或其他方式)并使用“call foo()”语句。

例如:

(gdb) call fprintf(stderr, "test %d\n", 5)
test 5
$3 = 7
(gdb)

关于c - 如何在另一个进程中调用函数(C,Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19919846/

相关文章:

c - 单击后如何删除文本?

performance - 本地 IPC 的平均性能测量

c - 我自己的类似 strcat() 函数仅打印一个字符数组

c - CodeChef May Long Challenge、Chef 和 Strange Matrix 的以下代码有什么问题?

C# 表单通信

version-control - 对嵌入式 linux 项目执行版本控制的最佳方法?

linux - CMAKE:忽略唯一变量名称

linux - 如何在嵌入式 Linux 的引导和模块加载之间设置引脚?

C: 链接器命令失败,退出代码为 1

c - 在不相关的进程之间设置IPC