我们有一个用Pro * C编写的遗留代码,现在需要重构。是否有任何支持调试程序代码的调试器。
是否可以使用proc * C预编译后生成的.c / .cpp进行调试
答案 0 :(得分:4)
可以阅读here in chapter 9 LINES=YES
选项添加#line
C预处理程序指令。 (只需在上面的PDF中搜索“调试”一词,您就可以直接跳到正确的页面。)这样做可以调试原始的Pro * C代码。
如果没有上述选项,您仍然可以进行调试,但只要您传递了第一个Pro * C命令(已扩展到更多行),调试器就会指向完全错误(太远)的行)。插入的#line
指令只是纠正了这一点,而不会以任何其他方式影响调试过程;因此,如果您无法进行调试,则首先需要对其进行排序。
尝试找到调用proc
的makefile(或构建脚本)并添加上述选项。
请注意,如果您单步调试代码,调试器可能会在每个Pro * C命令上保留几个步骤。这只是因为Pro * C命令可以扩展到几行C代码,它们都分配了相同的行号。
很久以前,我的房间里有同事使用Pro * C,我依旧记得他们能够调试。此外,正如John Bollinger评论的那样,它应该都是可能的,因为Pro * C只是一个输出常规C / C ++的预处理器。
答案 1 :(得分:0)
当我在Pro * C批次上工作时,现在大约1年;我们只是在屏幕上显示trace_message。它就像:
定义一个变量:
if(a == 0)printf("打开光标");
(并且在大多数代码使用中)因此,当程序运行时,它将显示它正在做什么以及它正在取出什么值。我们也可以创建一个函数来创建一个debug_log.txt,而不是直接在屏幕上打印,无论你喜欢哪种方式。
并在prod中部署代码。只是:
我希望这可能有所帮助。
答案 2 :(得分:0)
下面是调试Pro * C程序的步骤。您必须已经安装并设置了gdb。请点击原始链接以获取更多信息。
gdb <program>
r - run program
b <line number> - set breakpoint
d <line number> - unset breakpoint
n -next line
s - step into
c - continue (to next breakpoint)
bt - backtrace
l <line number> - list the source code at <line number>
clear [line number] - clears the break point at [line]
q - quit
Watch <parameter> - Program stops when the value of the parameter changes
http://teaching.csse.uwa.edu.au/units/CITS2230/resources/gdb-intro.html
https://sourceware.org/gdb/onlinedocs/gdb/Set-Watchpoints.html