如何使用exec()调试从php调用的c ++代码

时间:2014-04-28 23:49:21

标签: php c++ eclipse debugging gdb

我使用" exec"在我的php应用程序中调用一些c ++代码正如 in this tutorial.所解释的那样,我试图弄清楚如何在执行c ++代码后对其进行调试。 c ++应用程序的开始和结束速度比我使用例如eclipse attach to process更快。 任何想法如何调试c ++代码一旦它从php应用程序调用exec()? 我在linux上使用eclipse和GDB。

php app工作流程如下: 从html表单获取值,将这些值传递给使用exec()调用的c ++代码,从c ++获取输出,然后使用php将其显示在html上。把它想象成php是控制器而c ++是模型。

1 个答案:

答案 0 :(得分:1)

首先取决于你如何使用php代码。如果您使用PHP生成一个Web页面,那么在生成HTML(或其他)的过程中您可以在其中执行一些C ++代码,那么它有点棘手。如果您使用命令行来运行PHP,则可以将$command"myprog arg1 arg2更改为"gdb --args myprog arg1 arg2" - 这将启动调试器gdb而不是仅运行“myprog”。

如果您无法调试实际应用程序(例如,因为“myprog”的输出是您网页的一部分),那么我只需在机器上的命令行上运行$ gdb --args myprog arg1 arg2 ,并独立调试代码。

或者,如果您必须将其作为Web应用程序的一部分进行调试,您可以将sleep(10);添加到“myprog”的开头,并使用gdb attach X,其中X是进程ID (例如,来自topps aux | grep myprog) - 在sleep(10);行之后设置断点,然后执行gdb命令continue