• ベストアンサー

@niftyで効率的なデバッグ方法は?

ローカル(RedHat7.3)で動作確認したCGIが@nifty上でエラーになることがあります。 @niftyではCGI::Carpモジュールが使えないためエラーログを見ることが出来ず、デバッグに難儀しています。 簡単なログをファイルに書き出すtraceサブルーチンを作って随所からコールしてみようかとも思っているのですが、もっと効率的な方法をご存知でしたらアドバイスいただけますようお願いします。

  • CGI
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • rara_sun
  • ベストアンサー率50% (271/539)
回答No.1

元々のエラーログ機能が使えないのなら、エラーログをファイルへ書き出す、または、標準出力する処理を入れてあげるしか方法はない様に思えます。 @niftyというしがらみの中で、他の方法はないのでは?と個人的には思います。 @niftyに相談できる余地があるかどうかにもよりますが・・。

mrumesuke
質問者

お礼

やはりそうですか。 方向性が正しいことが分かって安心しました。 (実は密かに偽Carpのようなモジュールの存在を期待していたのですが。(笑)) @niftyに相談の余地は、、、難しいですよね。 これを機にレンタルサーバの利用を検討します。 回答ありがとうございました。

関連するQ&A

  • VC++のCOMのデバッグ方法について

    VC++でつくられたCOMをデバッガを使ってデバッグしたいのですが どのようにすればいいのか、よい手段がわからず困っています。 いま担当しているプログラムの作りとしては、 2つの実行可能形式ファイル(AAA.exeとBBB.exe)があって、 AAA.exeは、 単独で動かした場合は自分のクラスをレジストリ登録/解除するプログラムで それ以外にもいくつかの関数(後述のfunCCC関数やログ出力関数)を実装しています。 BBB.exeは、CoCreateInstance関数を使用してAAA.exe内のクラスのオブジェクトを作成して その中で定義されている関数(funcCCC)にアクセスしています。 AAA.exeを実行してCOMがレジストリ登録されていることは レジストリエディタで確認できていて、 また、BBB.exe内でCoCreateInstance関数が成功していることも、 funcCCCが実行されて正常で結果が戻ってきていることもプログラムの実行結果からわかります。 この状態で BBB.exeからfuncCCCをコールしたときに AAA.exeのfuncCCCにステップインしてデバッグしたいのですが このようなことは、たとえばVisualStudio(2003)のデバッグ機能でできるのでしょうか。 デバッグしたい理由としては、AAA.exeの単体テストを行うためと、 あと、AAA.exe内のログ出力関数が AAA.exeを単独で起動したとき、つまり 自分のクラスをレジストリ登録するときは正常にログ出力されているのですが BBB.exeからfuncCCCを実行したときは、 funcCCC内で同じログ出力関数をコールしているのにログが出力されていないので デバッガを使って内部でどういう状態になっているのかを確認したいのです。 ログが出力されないので MessageBox関数を埋め込んでトレースや変数の内容を確認しているのですが その結果ではAAA.exeを単独で実行したときと同じように ログ出力関数がコールされているように見えます。 また DebugBreak関数を使う方法というのを見かけたので funcCCC内でDebugBreak()を実装してみたのですが その場合は、DebugBreakのところでプログラム(BBB.exe)が終了してしまいます。 COMについて認識違いがあればご容赦下さい。 よろしくお願いいたします。

  • IIS+Activeperl データファイル等を絶対パスでしか受け付けてくれません

    Windows2000serverの IIS5.0(だと思います、バージョンの見方が良く分かりません) ActivePerl5.6.1を導入した環境です。 このまえ、Windows2000serverのマシンを入れ替え、 新規にperlをインストールしなおしました。 それでwebページをすべて移動して稼動し始めたのですが、 一部動作しないCGIがあるのです。 調べてみると"./"ではじまるデータファイルやモジュールの読み込みを しているCGIがことごとく動作してませんでした。 データファイルやモジュールを c:\usr\local\bin\perl\libに移動して"./"を削除するか ファイルの指定を "C:\Inetpub\wwwroot\cgi-bin\secure\wforum\wf_log.cgi"のように フルパスで指定しないと動かないのです。 サーバ移転前はちゃんと動いてたのですけど・・・。 いったい私は何の設定を忘れてるのでしょうか。 ややこしい説明ですみませんがよろしくお願いします。

    • ベストアンサー
    • Perl
  • ロリポップサーバでのWeb拍手cgi設置について

    自分はロリポップサーバを利用しているのですが Web拍手のcgiを自サイトで動かす際のパーミッションが正しくないようで...正しく動作しません; ロリポップが推奨するパーミッションもWeb拍手配布サイト様が推奨するパーミッションも試してみたのですが上手くいかず...(@_@;) ファイルはちゃんとアスキーで転送しましたし perlパスもサーバに合わせたのですが... あとはパーミッションの問題だと判断しました。 使用ファイルは(数字は配布者様推奨パーミッション値) ・clap.cgi :拍手送信cgi 755 ・kaiseki.cgi :解析表示cgi 755 ・clapinit.cgi :設定、主要サブルーチン 644 ・jcode.pl :ライブラリ 644 ・log.dat :ログファイル 666 ・mes.dat :メッセージ保存ファイル 666 ・lock.dat :ファイルロック用ファイル 777 拡張子で見分けがつかない初心者なもので... ローカルでは動作したのであとこれだけ…!!! ロリポップで拍手cgi作動出来た方、ぜひ教えてください...(_ _;) 拙い質問で申し訳無いのですが...回答いただけると嬉しいです(*^_^*) それでは。長文質問失礼致します。。  

    • ベストアンサー
    • CGI
  • requireの使い方のどこがおかしいのでしょう?

    言語はperlです。 789.cgiから456.plを呼び出したいのですが、シンタックスエラーが出てきます。 789.cgiのrequireに関する行をコメントにしたら実行されるのですが…。 requireを使わずに、サブルーチン自体を789.cgiの中に書き込むことには成功しているのですが、 イマイチrequireを使った呼び出しのコツがわかりません。 どなたかご教授下さい。 以下にスクリプトを示しておきます。 よろしくお願いします。 *****以下789.cgi***** #!/usr/local/bin/perl use CGI::Carp qw(fatalsToBrowser); require "456.pl"; $a=12; $b=15; $d="xxxxxxxx"; $d=&plus(); print "content-type:text/html\n\n"; print <<"HTML_HTML"; <html> <head> <title> ヒアドキュメント </title> <body> ***** <br> $d <br> ***** <br> $a <br> ***** <br> $b <br> ***** </body> </html> HTML_HTML ***********以下456.pl************ sub plus { my $a=10; my $b=10; $c=$a+$b; return $c; }

    • ベストアンサー
    • CGI
  • サーバー間でファイルコピーしたい

    WEB上のレンタルサーバーを複数使用しているのですが、それらの間でファイルをコピーするのに、一旦ローカルPCにダウンロードしてからアップロードするのは不便です。 そこで、ファイル名と送り先のサーバーとユーザー名・パスワード等必要な情報をインプットすればファイルをコピーするようなCGIを設置出来ないかと考えています。 Net::FTPを使えば出来るのかな?とか思って #!/usr/bin/perl -w use CGI::Carp qw(fatalsToBrowser); use Net::FTP; $ftp = Net::FTP->new('サーバー'); $ftp->login("ユーザー名", "パスワード"); $ftp->get("index.html"); $ftp->quit; exit; と、やってみましたが Can't call method "login" on an undefined value at xxxxxxx. というエラーメッセージがでます。 同じスクリプトをローカルで動かすと問題なく動きます。 ひょっとして、サーバー同士ではファイルコピーは出来ないものなのでしょうか?

    • ベストアンサー
    • Perl
  • 自作したサーバーでperlが動かない

    この度、centos5.3で自宅サーバーを組んだのですが、どうしてもある記述をしたperlのプログラムが動作しません。 他の記述方法であれば、問題なく動作します。 内容としては、htmlをOPENで読み込んで、出力させるだけの単純な物です。 なにか設定が悪いのでしょうか? なお他のサーバーでは、同じプログラムは動作します。 perlのバージョンは、5.8.8です。 記述の内容は次の通りです。 ********************************* #!/usr/local/bin/perl open(HTML, "test.html"); @log = <HTML>; close(HTML); print "Content-type: text/html\n\n"; print <<"EOF"; @log EOF exit; ********************************* エラーログには、Premature end of script headers: test.cgiとなっています。 もちろん、test.htmlファイルも存在します。 どなたかお教え頂けませんでしょうか? 宜しくお願いします。

  • apacheでcgiが動きません

    apacheをインストールし設定を行っていますがCGIが動いてくれません。 具体的にはCGIのソースがそのまま表示されてしまいます。 ネットを調べてみても <Directory /home/ultra/public_html> Options +ExecCGI AddHandler cgi-script .cgi .pl </Directory> を追加すれば動くような事が書いてありますがこの設定では動いてくれないようです。 何か根本的に間違っていることをしているのでしょうか。 アパッチのバージョンは以下のとおりです。 Server version: Apache/2.4.3 (Unix) suexecで動かしたくsuexecの設定もしていますが、 ログにsuexecのログが生成されないのでその前の段階かと思うのですが・・。 エラーログなどは特に表示されません。cgiのソースが20xで返されているので 当たり前かもしれませんが .コンパイル前の /configreは以下のように設定しました。 ./configure --enable-mbstring \ --enable-mbstr-enc-trans \ --enable-mbregex \ --enable-i18n \ --with-xml \ --with-mysql=/usr/local/mysql \ --with-pgsql=/usr/local/pgsql \ --enable-track-vars \ --enable-discard-path \ --with-gd \ --enable-gd-native-ttf \ --with-zlib-dir=/usr/local \ --with-pdflib=/usr/local \ --enable-shared-pdflib \ --enable-exif \ --disable-debug \ --enable-debug=no \ --enable-debugger=yes \ --enable-memory-limit=yes \ --enable-magic-quotes=yes \ --with-exec-dir=/usr/bin \ --without-system-regex \ --with-dbase=yes \ --enable-bcmath=yes \ --enable-ftp \ --enable-sockets \ --disable-posix-threads \ --enable-xsl \ --enable-xslt \ --with-xslt-sablot \ --with-xsl=/usr/local \ --with-dom=/usr/local \ --with-dom-xslt=/usr/local \ --enable-soap \ --enable-simplexml \ --with-gettext=/usr/local \ --enable-sqlite-utf8 \ --with-pdo-mysql=/usr/local/mysql \ --with-pdo-pgsql=/usr/local/pgsql \ --with-pdo-sqlite=/usr/local \ --with-curl=/usr/local/lib \ --with-openssl=/usr/local/openssl \ --with-mcrypt=/usr/local \ --with-iconv=/usr/local \ --with-xmlrpc \ --enable-safe-mode \ --enable-ssl \ --enable-dav \ --enable-so \ --enable-suexec \ --with-suexec-caller=apache \ --with-suexec-userdir=public_html \ --with-suexec-docroot=/home \ --with-suexec-logfile=/usr/local/apache2/logs/suexec_log \ --with-suexec-uidmin=500 \ --with-suexec-gidmin=100 ご回答よろしくお願いいたします

  • J2ME の 効率的なデバッグ方法

    統合開発環境 Eclipse 3.4.2 J2ME Sun Java Wireless Toolkit 2.5.2.01 for CLDC こちらの環境で、携帯アプリを自作しているのですがクラスを スタンドアローンで動かすことができず、スレッド実行しています。 エラーはどのクラスで起きたのか分からないまま、様々なエラーが でるために、場合によっては各行に System.out.println("Line 123"); と記述してコンソールで、どこで止まったのか調べてクラスのエラースロー で原因を確かめるという方法をとって対処しています。 こんな方法しかないならデバッグ用の専用ツールを作成しますが プロの人に聞いたら、Eclipseの機能を使えばそんな方法やらんでも いいからと言われて調べて見たんですが。 明らかに携帯アプリの場合スレッド実行してるので、WEBアプリより デバッグは難しいんじゃないのか?と疑念を抱いております。 どうやってデバッグしているでしょうか? ご教授下さい。

  • TNS-12203について

    Oracle接続に関して質問があります。 環境は下記です。 クライアント側:Windows2000 サーバー側  :Oracle8.0.5 クライアント側にて、Visual Basic6.0で作成した実行モジュールにて、サーバー側のオラクルDBに接続します。 現在、たまにTNS-12203,TNS-122560,TNS-530の1セットが出て、サーバー側に接続できません。 上記エラーが発生するときは、ログオンメッセージ(ユーザー名、パスワード、ホスト文字列を聞いてくるもの) がWindow上に現れ、そのテキストボックスに正常な文字列を入れても、また、何も入れなくても、上記エラーが 発生します。因みに、上記エラーは、実行モジュールと同一フォルダにsqlnet.logが、作成され、その中に記述されてあるものです。 ホスト文字列の入力がない場合、LocalマシンのデフォルトSIDであるORCLにbeq接続されておるとのことらしいです。 そこで、ODBCデータソース アドミニストレータのトレース機能を使用して、ログを取ろうとしたのですが、 何も出力してくれません。 どなたか、このエラーの原因、調査方法、解決方法をご存知の方がいらしたら、お教え頂けませんでしょうか?

  • デバッグの方法について

    デバッグをすると”システムDLL内をトレース出来ません”というダアログが出て そこから先へ進めなくなるのですが、これはどうしようもないことなのでしょうか? それとも、DLL内のトレースは飛ばしてその続きから実施する方法が 有るのでしょうか? よろしくお願いします。