- PR -

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

投稿者投稿内容
Rey
会議室デビュー日: 2004/11/14
投稿数: 7
投稿日時: 2008-04-07 23:46
1回はうまくいくという現象で考えると、
参照設定したDLLのローカルコピーとかが何か悪さしてないか気になります。

あるいは、
>ステップ実行で見てみたのですが、なんの変哲
>もないコントロールをNEWしているところでした。
の「なんの変哲もないコントロール」というのが
実はInputmanやElTabelleとかならまだわかりやすいのですが…。

べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-04-08 21:28
引用:
VB.NET2003 SP1
.NET Framework 1.1
InputMan for .NET 2.0J
El Tabelle for .NET 2.0

ふと思いましたが各端末の.NET2.0のインストール状況はどうなっていますかね。
このInputManとEl Tabelleは2.0用ですよね。

引用:
>リリースビルド時は問題ないんでしょうか。
私はリリースビルドに関して簡単にコンパイルと呼んでしまってますが、
コンパイルはこのダメダメなCの環境でも問題なく通ってしまうんです。

私が言ったのは厳密には[リリースビルドしたモジュールで実行]です。
あとはリリースでもデバッグでもVisual Studioを閉じた状態で実行したらどうなのか、とか。
(これはソリューションを一度閉じたら2回目も正常とのことなので大丈夫そうですが)

ただ、私もReyさんの言う「ローカルコピーとかが何か悪さ」の可能性が強い気がします。
実行前、フォームを開いているとき、フォームを閉じてからソリューションを閉じる前、
など様々なタイミングで存在するファイル等の差異を見てみる価値はありそうです。まずは、
そのフォルダ内、差異がないようならVisual Studioが使うテンポラリフォルダ(ありましたっけ)とか。
tx2005
会議室デビュー日: 2008/04/02
投稿数: 10
投稿日時: 2008-04-09 11:03
ありがとうございます。

>私が言ったのは厳密には[リリースビルドしたモジュールで実行]です。
「C」の端末で作成したexeを実行環境に置き実行したところ、
正常に動作しました。

ソースの入ったフォルダごと比較するために、最新版保管場所の
「A」のサーバから再度同じフォルダを「B」「C」へそれぞれ
コピーして来て、ちょっとずつ差を見てみました。
フォルダの比較には「WinMerge」を使用。
さすがに問題無いとは思いましたが念のため持ってきたままのフ
ォルダを比較。やっぱり完全に同一。(^^

そして「B」「C」それぞれソリューションを開いて、そのまま
閉じるという操作をしてみました。すると「B」のみ閉じる時に
保存せよと言われました。保存しました。
binフォルダとobjフォルダにある「Interop.Excel.dll」が異なる
と出ました。日付違い。サイズ同一。
その他、.suo と .vbproj と .vbproj.user のファイルも異なる
との判定が出ました。

そのうち内容の確認できる .vbproj と .vbproj.user を比較しま
すと、

.vbprojでは
<Reference
Name = "Microsoft.Office.Core"
          以下省略


/>
<Reference
Name = "VBIDE"
          以下省略

の記述が「PC_B」のみありました。

.vbproj.userでは最初の2行が
「PC_C」
   <VisualStudioProject>
   <VisualBasic LastOpenVersion = "7.10.6030" >

「PC_B」
   <VisualStudioProject>
    <VisualBasic LastOpenVersion = "7.10.3077" >
の差でした。


ここで改めて
それぞれのMicrosoft Visual Studio .NET 2003を起動して、
メニューのヘルプにある、
「Microsoft Development Environment のバージョン情報」
を表示してみました。
それぞれ以下のような状況でした。

PC_A:プログラムのテスト環境であるサーバ
Microsoft Development Environment 2003 Version 7.1.3091
Microsoft .NET Framework 1.1 Version 1.1.4322
セットアップされている製品
Microsoft Visual Basic .NET

PC_B:Cと同機種の開発用PC
Microsoft Development Environment 2003 Version 7.1.3091
Microsoft .NET Framework 1.1 Version 1.1.4322 SP1
セットアップされている製品
Microsoft Visual Basic .NET

PC_C:現在不具合の出ている開発用PC
Microsoft Development Environment 2003 Version 7.1.6030
Microsoft .NET Framework 1.1 Version 1.1.4322 SP1
セットアップされている製品
Microsoft Visual Basic .NET
Microsoft Visual Studio .NET 2003 Service Pack 1 (KB918007)

それぞれ微妙にサービスパックの当たり方が違います。
「PC_C」に(KB918007)が当たっているのは、本件の障害が回避
できないかと以前に当てたが、状況が変わらなかったというもの
です。

なんだかんだ言ってずいぶんいろいろと違いますね。

あと、デバッグ実行後のプログラムフォルダの内容の変化を比較し
ていると、
状況からして(「A」=「B」)<>「C」であってほしいのですが
(「A」=「C」)<>「B」がほとんどでした。がっくり。

(「A」=「B」)<>「C」な状況だったのは、上記の
「VisualBasic LastOpenVersion」くらいでした。

もういっそのこと「C」の端末、ボンっていって壊れてくれないか
なと思いかけてきました。
かなり嫌になってきましたが、もう少し調べてみます。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-04-10 21:07
あ、勘違いしてた。InputManは.NET1.0以降で動作するのですね。
こういうとこは読みましたよね。GACとか大丈夫ですかね。
Excelとかも関係あるかもですね。OfficeとかOfficeのコンポーネントのインストール状況も
しらべてみるとか。差異が出たところでを、BをあえてCと同じにしてエラーが出るかとか
やってみるといいかもしれないです。あとは、なんの変哲もないコントロールは型は何でしょう。
.NET Framework内のコントロールだったら結構怪しい感じですが。
tx2005
会議室デビュー日: 2008/04/02
投稿数: 10
投稿日時: 2008-04-11 19:21
ありがとうございます。

>こういうとこは読みましたよね。GACとか大丈夫ですかね。
「こういうとこ」っていうのがリンクになってるのすごいですね。
どうやるのかな。 んなことは二の次ですね。

>「GACとか・・・」
このリンクの記載は以前に「InputMan」をバージョンアップする
ときにザット流し読みした程度でした。今回ジックリ見てみると、
意味のわからない部分多数でしたが、GACに関しての注意事項の
部分を私なりに解釈して関連箇所をチェックしましたが問題無さそ
うです。
「Interop.Excel.dll」の日付が異なる件はよくわかりません。もう
すこし見てみます。

エラーの出る場所を明確にしようと初期処理の部分に
ブレークポイントを入れまくって何度も実行し試してみました。

以下のようにコントロールがあり、19行記載しましたが、あと
25行くらいコントロールが続いています。

01 Me.WorkBook1 = New GrapeCity.Win.ElTabelle.WorkBook
02 Me.Meisai = New GrapeCity.Win.ElTabelle.Sheet
03 Me.Meisai2 = New GrapeCity.Win.ElTabelle.Sheet
04 Me.SiteDesc = New System.Windows.Forms.Label
05 Me.Site = New System.Windows.Forms.Label
06 Me.Label6 = New System.Windows.Forms.Label
07 Me.Label5 = New System.Windows.Forms.Label
08 Me.Clear = New System.Windows.Forms.Button
09 Me.Guide = New System.Windows.Forms.Label
10 Me.Exec = New System.Windows.Forms.Button
11 Me.Kensaku = New System.Windows.Forms.Button
12 Me.Hincd = New System.Windows.Forms.Button
13 Me.Label11 = New System.Windows.Forms.Label
14 Me.Lot = New System.Windows.Forms.TextBox
15 Me.Lotkensaku = New System.Windows.Forms.CheckBox
16 Me.Label15 = New System.Windows.Forms.Label
17 Me.FromMonth = New System.Windows.Forms.ComboBox
18 Me.DlgSaveFileDialog = New System.Windows.Forms.SaveFileDialog
19 Me.Shimekei = New GrapeCity.Win.Input.Number

どきどきしながら「続行」を押して一行ずつ進めていくと、
09行目から10行目へ移るときにエラーとなるのがほとんどです。
07行目あたりから13行目あたりでエラー位置が変動します。

止まる位置からすると、「GrapeCity」がらみではないような気が
します。
また、ごくまれにエラーとならず最後まで通るときがあります。
なんなんでしょう。(ToT)
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-04-11 21:55
引用:
「こういうとこ」っていうのがリンクになってるのすごいですね。
どうやるのかな。

これは投稿画面のBBコードというリンクからいけるページに書いてありますよ。

Interop.Excel.dllはビルドした時刻が違えば違うとかそういう感じの理由でしょうから
「サイズ同一」ということであればそんなに問題ない気もします。

引用:
止まる位置からすると、「GrapeCity」がらみではないような気が
します。
また、ごくまれにエラーとならず最後まで通るときがあります。
なんなんでしょう。(ToT)

.NETの普通のコントロールをnewするときも例外でますか、確かによくわかりませんね。
スペックとかそういう問題な気がします。例えばコントロールをものすごく沢山new生成すると
例外がでます(でもこれはWin32Exceptionとかだったような)。
普通のコントロールnewでSystem.Runtime.InteropServices.SEHExceptionが出るのも不思議ですが。
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-04-11 22:40
<VS2003について>

 VS2003では生成したexeを元にデバッグしています。
これが結構、大変な事をしてデバック環境を作っているらしい
です(聞いた話ですが)
でVS2005からはvshost.exeをホストとしてデバック環境を作って
安定させています。
http://www.atmarkit.co.jp/fdotnet/dotnettips/410vshost/vshost.html
Formを派生させた場合など確かにVS2003よりVS2005の方がデザイン画面
が安定しています!!!
(デザイン画面が壊れてわわわわわ。。。。が少ない)


それを考えるとやはりElTabelle or Inputmanあたりが怪しいと私は思います。

@デザイン画面を開けずに実行したらどうでしょう?
A生成順番変えてみたらどうでしょう?
B出来るのであればVS2005にしてみたらどうでしょう?
tx2005
会議室デビュー日: 2008/04/02
投稿数: 10
投稿日時: 2008-04-15 00:56
ありがとうございます。

>@デザイン画面を開けずに実行したらどうでしょう?
これは特に効果無しでした。

>A生成順番変えてみたらどうでしょう?
自動生成コード部の行を入れ替えるという事でよろしいでしょうか?
エルタブレ、インプットマンがらみのコントロールの行をいくつか
移動させてみましたが、特に結果に変化は現れませんでした。

>B出来るのであればVS2005にしてみたらどうでしょう?
これは費用もかかりますし、既存のプログラムの事を考えると難しい
です。

エルタブレ、インプットマンが怪しいというご意見をたくさんいただいて
いましたので、今日 ん?もう昨日か・・・
昨日、エルタブレ、インプットマンのアンインストール、再インストール
を実施しました。効果ありませんでした。

そこで、
以前、OSから再セットアップして効果が無かったので、やる気が無かっ
たのですが、今回再度VisualStudioのアンインストール、エルタブレ、イ
ンプットマンのアンインストールから再セットアップをやってみました。
2時間弱かかったでしょうか。
ようやくセットアップが終わり、また、問題のプログラムを起動し、デバ
ッグ実行してみました。すんなり実行が通りました。
なにかの間違いかと思い停止させてはデバッグ実行を繰り返しましたが、
何度やっても異常なし。同様のエラーが出ていた別のプログラムも試し
ましたが、やはり異常なし。
ヤッタと思い、当会議室にどのように報告しようかなと考えながら、再セ
ットアップ後にまだやってなかった、エルタブレ、インプットマンのコン
トロールを「ツールボックス アイテムの追加と削除」を開いてチェック
を入れてツールボックスに追加しました。
その直後、まさかと思いながらデバッグ実行をかけました。

エラー再発。
つらい、つらすぎる。
頼むから壊れちまってくれよMYPC (ToT)

GrapeCityがらみがマズイのはよく判ったのですが、どう対処したらいい
のでしょうか?

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