- - PR -
.netのデバッグについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-07-04 11:48
asp.netのwebアプリケーションで実行して
SQL文でエラーが出たのでSQLを修正し再度実行すると SQLの修正前のソースが実行(読み込まれています)されます。 ブレークポイントで指定しても実行すると別のとこにブレークポイントがはられています。 こういった現象皆様はございませんか?.NETが壊れているのでしょうか? ご指導お願いいたします。 | ||||
|
投稿日時: 2005-07-04 12:01
ブレークポイントの設置位置と、実際のソース停止位置と異なる現象でしたら経験あります。
私の場合、同名のWebサービス用の実行ファイルとシンボル情報ファイルが2つずつ存在していたために、上記の現象が発生していました。 その際、不要なファイルを消してみたら正常にデバッグできました。 体感的には、VisualStudioが参照しているシンボル情報ファイルと、 実際の動作しているコードが違った為に発生しているように感じました。 (ローカルテスト用のモックデータのクラスが邪魔してたこともあります・・) 追記:過去ログさんもいろいろご存知のようですよ〜 [ メッセージ編集済み 編集者: 葉瀬崎浩樹 編集日時 2005-07-04 12:07 ] [ メッセージ編集済み 編集者: 葉瀬崎浩樹 編集日時 2005-07-04 13:22 ] | ||||
|
投稿日時: 2005-07-04 14:03
過去ログを見たところ解決につながらなかったため
ご相談いたしました。葉瀬崎浩樹さんの回避策は Webサービス用の実行ファイルとシンボル情報ファイルが2つずつ存在していたために、 上記の現象が発生していました。 その際、不要なファイルを消してみたら正常にデバッグで きました。 とありますが、Framework配下の Temporary ASP.NET Files内にあるソースを削除ということでしようか? | ||||
|
投稿日時: 2005-07-04 14:34
unibon です。こんにちわ。
あまり良くは知らないのですが、ASP.NETのアプリケーションを再起動しないと、新しくビルドし直した DLL がロードされないと思います。このためには iisreset(iisreset.exe) を動かすか、あるいは global.asax をセーブし直すかのいずれかでできます(もっとも、いわゆるホットでの DLL 差し替えはできるのかもしれませんが、良く知りません)。 ブレークポイントがずれるのも、DLL が古くてソースコードが新しいから、といった副次的なものでしょう。 | ||||
|
投稿日時: 2005-07-04 15:17
「Temporary ASP.NET Filesのソースの削除」については、よく分りません。
環境も無いので(^▽^;) 外しているかも知れませんが、 私のケースをもう少し説明しますと。 -- 状況 -- ・ソリューションには、MY_WSというWebServiceプロジェクトを含めている。 ・MY_WSと同名のNameSpace・クラス名・WebMethodを持つWebサービスのDllが、 WebServiceサイトのフォルダ内に存在した。(こちらは想定外のDll) -- 現象 -- ・デバッグ実行で追っかけると、ソリューションに含まれているほうの ソースコード上でブレークする。(しかし、停止位置は、ずれている) ・実際に実行されているのは、ソリューションに含めていない、想定外のDll。 ・リビルド、Web参照の更新、IISの強制再起動を試したところ、 正常に動く時もあったが、直ぐに、件の現象が発生するようになった。 -- 結果 -- 調査するとサイト内に、想定外のDllがあった。 削除すると正常な位置でブレークするようになった。 このことから WebService呼出の際、不要モジュールが混入していたため呼出先の解決が正しく行われず、上記現象が発生した、と結論づけました。 ですから、現象そのもののメカニズムは、unibonさんと同じ意見です。 なにか参考になれば幸いです。。 // 過去ログについて気を悪くされてましたらごめんなさい。 // 変なスマイリーがついちゃッたので編集・・ [ メッセージ編集済み 編集者: 葉瀬崎浩樹 編集日時 2005-07-04 15:22 ] [ メッセージ編集済み 編集者: 葉瀬崎浩樹 編集日時 2005-07-04 15:31 ] | ||||
|
投稿日時: 2005-07-04 16:33
unibonさん葉瀬崎浩樹さんご教授ありがとうございます。
IISの再起動を何度もし、また.NETの修復も行ったのですが効果なしでした・・・ 葉瀬崎浩樹さんの現象と似ています。しかし不要なDLLはありませんでした。 色々とありがとうございます。m(_ _)m unibonさんにご質問ですが、 iisreset.exeを直接実行しても大丈夫でしょうか? | ||||
|
投稿日時: 2005-07-04 17:10
他には確か...
C:\\Documents and Settings\\xxxx\\VSWebCache の辺りとか。 # たまにここのキャッシュが原因でなんか変な挙動したような...(詳細忘れ) | ||||
|
投稿日時: 2005-07-04 21:40
複数プロジェクトで1アプリケーションとしているときに、コンパイルしたモジュールがアプリケーションディレクトリにコピーされないことがあります。このとき、各プロジェクトのbinディレクトリにあるDLLを、アプリケーションのbinディレクトリにコピーしてやると、新しいコードで実行されます。
私のところで発生する現象で、マイクロソフトが「発生することがある」としている現象ではありません。 確定的な現象でないので、参考まで。 |