2011-06-28 17 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()でスタックしていました。コアダンプにデバッグシンボルが見つからなかったので、さらにデバッグできませんでした。 – arpita

答えて

0

マイPROC文は次のようになります接続:
EXEC SQL CONNECT:によって識別されるユーザ:使用したpasswdの - 問題は、以下のコードである場合 示唆してください

0

ここでは読み取り専用の場所を変更しようとしています。ステートメントの下

pchORALOG=getenv("oralog") 

問題です:

char *pchORALOG=""; 

に変更し、それを:

char *pchORALOG; 
+0

あなたは間違っています。 getenvは環境変数の値を指し示すconst char *を返します。コード例では、これはポインタを文字列定数に置き換えます。これは問題ありません。 – NovaDenizen

関連する問題