簡體   English   中英

如何調試 Pro*C 代碼?

[英]How to debug Pro*C code?

我們有一個用 Pro*C 編寫的遺留代碼,現在需要重構。 是否有任何支持調試 pro c 代碼的調試器。

是否可以使用 proc*C 預編譯后生成的 .c/.cpp 進行調試

正如 在第 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++ 的預處理器。

由於我正在處理 Pro*C 批次,現在大約 1 年了; 我們只是在屏幕上顯示 trace_message。 它是這樣的:

定義一個變量:

定義 a = 0

if(a == 0) printf("打開光標");

(以及大多數代碼使用)因此,當程序運行時,它將顯示它正在做什么以及它正在獲取什么值。 我們還可以創建一個函數來創建一個 debug_log.txt,而不是直接打印在屏幕上。

當你在 prod 中部署代碼時。 只是:

定義 a = 1

我希望這可能會有所幫助。

以下是調試 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM