2011-06-28 87 views
0

我在我的.PC文件下面的代碼,這是近10個進程,但一個進程它不工作作爲展示「核心轉儲/段錯誤」之稱。 這是由每個進程調用的代碼,作爲連接到數據庫的第一步。 請建議哪裏是在下面的代碼中的問題 - :Pro的C代碼連接到數據庫給分段錯誤

void DatabaseLogon (void) 
{ 
    EXEC SQL BEGIN DECLARE SECTION; 
     char *pchORALOG=""; 
    EXEC SQL END DECLARE SECTION; 

    EXEC SQL WHENEVER SQLERROR DO SQLError(); 

    /* Save text of current SQL statement in the ORACA if an error occurs. */ 

    oraca.orastxtf = ORASTFERR; 

    /* try to get the oracle login user/pass at the process level */ 
     if ((pchORALOG=getenv("oralog")) == NULL) 
     { 
     printf("Error:Cannot Logon to database!\n"); 
     SQLError(); 
     } 
     else 
     { 
     EXEC SQL CONNECT :pchORALOG; 
     } 
} /* End Of DatabaseLogon */ 

感謝 Arpita

+1

如果你得到一個核心轉儲,然後看着你調試轉儲很可能給你一個線索。還有什麼讓你覺得這是導致問題的那段代碼? – Jackson

+0

Pro C是什麼? –

+0

我只是做了pstack核心,我看到它停留在Databaselogon()那裏,因爲在覈心轉儲中找不到調試符號,因此無法進一步調試......並且就Pro C而言,它關注它的Pro * C! – arpita

回答

0

我使用ProC連接語句如下所示:
EXEC SQL CONNECT:用戶IDENTIFIED BY:passwd的使用:數據庫;

0

你正試圖在這裏修改只讀位置。

pchORALOG=getenv("oralog") 

下面的語句是問題:

char *pchORALOG=""; 

將其更改爲:

char *pchORALOG; 
+0

你錯了。 getenv返回一個const char *,指向環境變量的值。在示例代碼中,這將替換指向「」字符串常量的指針。這可以。 – NovaDenizen