- - PR -
ある端末だけデバッグが通らない。
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-04-07 23:46
1回はうまくいくという現象で考えると、
参照設定したDLLのローカルコピーとかが何か悪さしてないか気になります。 あるいは、 >ステップ実行で見てみたのですが、なんの変哲 >もないコントロールをNEWしているところでした。 の「なんの変哲もないコントロール」というのが 実はInputmanやElTabelleとかならまだわかりやすいのですが…。 | ||||||||
|
投稿日時: 2008-04-08 21:28
このInputManとEl Tabelleは2.0用ですよね。
あとはリリースでもデバッグでもVisual Studioを閉じた状態で実行したらどうなのか、とか。 (これはソリューションを一度閉じたら2回目も正常とのことなので大丈夫そうですが) ただ、私もReyさんの言う「ローカルコピーとかが何か悪さ」の可能性が強い気がします。 実行前、フォームを開いているとき、フォームを閉じてからソリューションを閉じる前、 など様々なタイミングで存在するファイル等の差異を見てみる価値はありそうです。まずは、 そのフォルダ内、差異がないようならVisual Studioが使うテンポラリフォルダ(ありましたっけ)とか。 | ||||||||
|
投稿日時: 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」の端末、ボンっていって壊れてくれないか なと思いかけてきました。 かなり嫌になってきましたが、もう少し調べてみます。 | ||||||||
|
投稿日時: 2008-04-10 21:07
あ、勘違いしてた。InputManは.NET1.0以降で動作するのですね。
こういうとこは読みましたよね。GACとか大丈夫ですかね。 Excelとかも関係あるかもですね。OfficeとかOfficeのコンポーネントのインストール状況も しらべてみるとか。差異が出たところでを、BをあえてCと同じにしてエラーが出るかとか やってみるといいかもしれないです。あとは、なんの変哲もないコントロールは型は何でしょう。 .NET Framework内のコントロールだったら結構怪しい感じですが。 | ||||||||
|
投稿日時: 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) | ||||||||
|
投稿日時: 2008-04-11 21:55
Interop.Excel.dllはビルドした時刻が違えば違うとかそういう感じの理由でしょうから 「サイズ同一」ということであればそんなに問題ない気もします。
スペックとかそういう問題な気がします。例えばコントロールをものすごく沢山new生成すると 例外がでます(でもこれはWin32Exceptionとかだったような)。 普通のコントロールnewでSystem.Runtime.InteropServices.SEHExceptionが出るのも不思議ですが。 | ||||||||
|
投稿日時: 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にしてみたらどうでしょう? | ||||||||
|
投稿日時: 2008-04-15 00:56
ありがとうございます。
>@デザイン画面を開けずに実行したらどうでしょう? これは特に効果無しでした。 >A生成順番変えてみたらどうでしょう? 自動生成コード部の行を入れ替えるという事でよろしいでしょうか? エルタブレ、インプットマンがらみのコントロールの行をいくつか 移動させてみましたが、特に結果に変化は現れませんでした。 >B出来るのであればVS2005にしてみたらどうでしょう? これは費用もかかりますし、既存のプログラムの事を考えると難しい です。 エルタブレ、インプットマンが怪しいというご意見をたくさんいただいて いましたので、今日 ん?もう昨日か・・・ 昨日、エルタブレ、インプットマンのアンインストール、再インストール を実施しました。効果ありませんでした。 そこで、 以前、OSから再セットアップして効果が無かったので、やる気が無かっ たのですが、今回再度VisualStudioのアンインストール、エルタブレ、イ ンプットマンのアンインストールから再セットアップをやってみました。 2時間弱かかったでしょうか。 ようやくセットアップが終わり、また、問題のプログラムを起動し、デバ ッグ実行してみました。すんなり実行が通りました。 なにかの間違いかと思い停止させてはデバッグ実行を繰り返しましたが、 何度やっても異常なし。同様のエラーが出ていた別のプログラムも試し ましたが、やはり異常なし。 ヤッタと思い、当会議室にどのように報告しようかなと考えながら、再セ ットアップ後にまだやってなかった、エルタブレ、インプットマンのコン トロールを「ツールボックス アイテムの追加と削除」を開いてチェック を入れてツールボックスに追加しました。 その直後、まさかと思いながらデバッグ実行をかけました。 エラー再発。 つらい、つらすぎる。 頼むから壊れちまってくれよMYPC (ToT) GrapeCityがらみがマズイのはよく判ったのですが、どう対処したらいい のでしょうか? |