@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ある端末だけデバッグが通らない。

投稿者投稿内容
tx2005
会議室デビュー日: 2008/04/02
投稿数: 10
投稿日時: 2008-04-02 18:37
VB.NET2003にてプログラムを作成しています。
開発環境として3台あるのですが、同じソースをもって
来てデバッグ実行しているのに、1台だけ、
−−−−−−−−−−−−−−−−−−−−−−−−−−
'System.NullReferenceException'のハンドルされていな
い例外が 不明なモジュールです。で発生しました。
追加情報:オブジェクト参照がオブジェクトインスタンス
に設定されていません。
−−−−−−−−−−−−−−−−−−−−−−−−−−
と表示され、「中断」「継続」を選択させられます。
コンパイルは問題なくできます。
ここで「継続」を選択するとプログラムは普通に立ち上が
り動作も問題なさそうです。
そして、「中断」したり再実行したり「継続」したりを繰
り返していると
−−−−−−−−−−−−−−−−−−−−−−−−−−
'System.Runtime.InteropServices.SEHException' のハン
ドルされていない例外が不明なモジュールです。で発生し
ました。
追加情報:外部コンポーネントが例外をスローしました。
−−−−−−−−−−−−−−−−−−−−−−−−−−
と表示される時もあります。ここでも「継続」とすれば普
通に起動して動いているようです。

他の端末では問題なくデバッグ実行もコンパイルもできま
す。また、3台とも問題なく動くプログラム(ソリューシ
ョン)もあれば、そうでないプログラムもあります。
問題が発生するの端末は決まってこの端末です。

主にこの問題の端末で開発を行いたい(自分に与えられた
PCなので)ので、デバッグ実行で一旦引っかかる今の状
態ではいつ動かなくなるか心配で開発に集中できません。
現に動かなくなった事があって、その時はバージョンを戻
して、それ以降、そのプログラムは他の端末で編集してい
る状況です。

その問題の端末は一度PC自体の再セットアップも実施し
ましたが効果がありませんでした。

当方、知識的に必要な部分のみ本、WEB等で調べて勉強
しながら開発しているので、非常に基本ができていないマ
ダラな知識なので、うまく状況説明ができませんが、環境
を補足しますと、

VB.NET2003 SP1
.NET Framework 1.1
InputMan for .NET 2.0J
El Tabelle for .NET 2.0

とりあえずどこで引っかかっているのかを調べようと、
InitializeComponent()
あたりからステップ実行で見てみたのですが、なんの変哲
もないコントロールをNEWしているところでした。

ここまでの説明であやしそうなところはありましたらよろ
しくお願い致します。 
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2008-04-02 19:01
さかもとと申します。

「コードには全く問題がない」と仮定すれば、本当に同一の環境なのかどうか?を一つ一つ洗い出していくのが一番の近道かもしれません。OSのパッチとか、サードパーティ製品がどれも同等にインストールされているのかとか。

または、最少コードで(InputMan等使用せず)検証していくのも一つの方法かと思います。
_________________
------------------------------------------
拝啓、さかもとと申します♪
tx2005
会議室デビュー日: 2008/04/02
投稿数: 10
投稿日時: 2008-04-02 22:53
返答ありがとうございます。
開発環境として3台あると書きましたが、それらをA、B、Cとしますと

A:サーバ(Windows Server 2003)です。デバッグ正常にできます。

B:正常にデバッグできるPC(Windows XP Pro SP2)

C:問題のデバッグの引っかかるPC(Windows XP Pro SP2)

どれもVB.NET 2003がインストールされています。
Cは自分用のPCであり、プログラミング以外にもいろいろと用途があり
B、CはともにMetaFrameのクライアントでもあります。
Bも用途がいろいろとあるので、私が開発に使うわけにはいきません。

コードに関しては、Aのサーバに置いてある共通関数用のフォルダ、プロ
グラムのフォルダともに正常に動いている最新版をフォルダごとB、Cに
コピーして動作確認しているので全く同じコードで動作が違っているとい
う事に関しては間違いないと思います。

なので、どこか環境が違うと思い、いろいろ見てみたのですが、見当がつ
きません。

プログラムは何本もあるのですが、どれも似通っていて、おおまかな作り
としてはOracleのデータベースからデータを取り出してエルタブレで表示
し、印刷またはエクセル、csv出力といった形がほとんどです。
「C」の端末でも何の問題もなく動くプログラムがほとんどなので謎です。

実際何が悪いか判らないので、以前思い切ってCを一度PCの再セットア
ップからVisualStudioのインストール、インプットマン、エルタブレ等、
必要な物をBと同等に入れ直し、やれやれこれで、ずっと悩んでいた問題
も解消されたと思っていたのに、試してみたら状況が変わらなかった為、
愕然として以来、テスト環境のサーバ「A」で編集していました。でもこ
のままでは良くないと思い原因究明をしようと最近また調べ始めたのです
すが、さっぱりです。WEBでの検索も思いつくワードで検索しまくった
のですが、有力な情報が見つかりません。


さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2008-04-02 23:59
さかもとです。

[System.Runtime.InteropServices.SEHException]で検索しただけですので、もうご覧になっているかとは思いますが、

http://support.microsoft.com/kb/897298/ja

は当てはまりませんか?


_________________
------------------------------------------
拝啓、さかもとと申します♪
tx2005
会議室デビュー日: 2008/04/02
投稿数: 10
投稿日時: 2008-04-03 08:16
さかもとさま

返答ありがとうございます。
いただいたリンク見てみました。
見てて思い出したのですが、いろいろ調べてるときに一度見た
ところでした。その際に「Application.EnableVisualStyles」
をVBのエディターの検索で検索対象を「現在のプロジェクト」
にして検索してもヒットしなかったので、該当しないなぁとい
う認識でした。
今回改めて検索してみましたがやはり該当無しでした。

sai
会議室デビュー日: 2007/07/18
投稿数: 10
投稿日時: 2008-04-04 13:01
デバッグ時の例外の設定は3台とも同じでしょうか?
VSのメインメニュー「デバッグ」ー「例外」で確認できます。

ここで「デバッガで中断」といった設定があると、普段スルーされる例外(コントロール等の内部で発生しているものなど…)に対してもデバッグで止まる事があります。

(再インストールしているのでそんな事はないと思いますけど、気になったので…)
tx2005
会議室デビュー日: 2008/04/02
投稿数: 10
投稿日時: 2008-04-04 14:50
ありがとうございます。

さっそく確かめてみましたが、

3台とも

例外設定のツリーをザッと一通り見てみましたが、

例外がスローされたとき
・継続

例外がハンドルされない場合
・デバッガを中断

もしくは、「親の設定を使用」

となっていました。
まよんが
常連さん
会議室デビュー日: 2007/05/20
投稿数: 22
投稿日時: 2008-04-04 17:37
'System.NullReferenceException'はnew をされていないオブジェクトに
アクセスした時に発生します。

きちんと動作する端末があるという事はソース上はきちんとnewがされている事になります。

となるとGCが働いて消されている可能性があります。
GCはメモリ使用量がしきい値を超えると動作する為、端末により異なります。
(同一性能であっても実行しているプログラムによっても変わります。)

その観点でもう一度ソースを見直されてはどうでしょうか?

不要なオブジェクトはDisposeで破棄をすれば頻度は減ると思いますが・・・

スキルアップ/キャリアアップ(JOB@IT)