質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

1563閲覧

一部のPCで起きてしまうソフト不具合の原因究明について

TEC_S

総合スコア79

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1グッド

2クリップ

投稿2016/02/05 04:55

お世話になります。
今回は、とても漠然とした相談になりますが・・・ご意見頂ければと思います。

現在C++/MFCにてデスクトップアプリケーションをリリースしております。
対応はXP~Windows8.1までとなっており、開発環境にはVC2005を使用しています。
DBも搭載しており、管理ソフトとして使用して頂いている状況です。
大体2000~3000ユーザーに使っていただいているソフトとなります。

その内の1ユーザー様で、多岐にわたるソフト強制終了が起きています。
起きている処理に関しては、ハードウェアとの連携部分や、ソフト間の連携部分、
ソフトの通常の動きの途中でも、ソフトが落ちている形跡がLogより見て取れます。

その他のユーザー様では、通常に使用して頂いている事から、
PCに接続しているハードや、PCそのものの交換も試しましたが、未だに解決できておりません。(そもそも原因を調査せずに進めているのが不味いですが・・・)

そこで、どういった調査方法があるのか、教えて頂きたいです。
とても漠然としており申し訳ありませんが、宜しくお願い致します。

dsk👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

どういった調査方法があるのか、教えて頂きたいです。

2000~3000ユーザーを抱えていらっしゃる手練にひけらかすことかと恐縮しますが、検死と再現の両面から調べるのが基本です。さらに最後の手段は「再現待ち」ですね。順を追って詳細化しましょう。

検死は、異常終了時のテキストログおよびメモリダンプから原因を調査するものです。
再現は、検死によって得られた原因の可能性から、自前で用意した環境で予想した条件を整えて複数回試行して再度事象を発生せさることです。これは不具合修正後のテストでも必須の環境ですね。
最後の手段の再現待ちは、不具合解決を目的とせず、何らかの情報取得を目的とした修正を行って顧客に提供します。最も悪いパターンとされているもので、ある程度の確信のある根拠が必要です。

その内の1ユーザー様で、多岐にわたるソフト強制終了が起きています。
ソフトの通常の動きの途中でも、ソフトが落ちている形跡がLogより見て取れます。

これはテキストのログでしょうか。もし顧客の環境のWindows設定の変更が可能であれば、異常終了時にメモリダンプを出力するように依頼できないでしょうか。
私はUNIXの経験が長かったため、メモリダンプを用いた調査は当たり前だったのですが、その後Windowsの仕事を行った際に、メモリダンプがあまり使われておらず、驚いた経験があります。
Windowsでは「WinDbg」にて「!analyze -v」などを用いる方法ですね。職人技が必要です。(今は別の方法があるのでしょうか?)まずはトレースバックを見て、直近でダウンしているフレームがどこの関数であるか調査しましょう。(当然、コールスタックがどのようにOSで管理されているか知っていなればいけません)変数の内容も見ていきましょう。マルチスレッドの場合は原因となるスレッドを探します。

最後に、考えられる可能性としまして・・・

  • ソフトの発生条件が厳しい不具合
  • OSの不具合(HP-UXで実際にありました。即対応は望めなかったので別の関数で実装しました)
  • 顧客がインストールした何らかの拡張モジュール

でしょうか。

PCに接続しているハードや、PCそのものの交換も試しましたが、未だに解決できておりません。(そもそも原因を調査せずに進めているのが不味いですが・・・)

根拠もなく顧客に出費および工数を伴う対策をさせ、挙句に問題を解決できなければ信用を失いますよ。
言いなりの顧客に対して手軽な対策であるのはわかりますが、真摯に対応しましょう。

投稿2016/02/05 10:33

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TEC_S

2016/02/05 10:58

再現待ち・・・確かにそうですね。 頂いた内容の中で、確かにWindows系はメモリダンプはほとんど使っておりません。 色々な文献の中でも、あまり見かけない様に感じております。 一度、そういった方面を調べてみようと思います。ありがとうございます。 ハードの費用は、もちろんこちら持ちです(でなければ仰る通り信用を失います) ただ、解決できない・・・という結果からも信用を失いそうですが。。。 ご回答、ありがとうございました。
guest

0

com/com+ 関係だと決め手が無いようですが、ソフトの相性を一つずつ確認する他無いです。
イベントログに記録されるので、内容を確認してください。

こちらも、com+ の rpc エラーが出る場合に対処する方法を模索してまづが、
決め手、常套手段が無いのでオカルト解決方法に走ってる奴もいます。
オカルト:スリープ時間次第ではエラーが出ないことから100%近く再現しない適切なsleep秒数を測ってます。

投稿2016/02/05 05:50

ipadcaron

総合スコア1693

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TEC_S

2016/02/05 10:52

Sleep・・ですか。 一度は、試した事のある伝説ですね。 こういった場合、イベントログを頼りにしたいのは山々ですが、、、 Windowsのイベントログというのは、経験上あまり有力な情報が載っていないのが 悩みではあります。。 地道にやって行きます。 ご回答、ありがとうございます。
guest

0

地道に原因を究明する方が解決の早道のような気がします。

システムの構成等知らない状態で意見していますので的外れかもしれませんが、PC交換しても発生しているのであれば、周辺のハードウェアとの連携に問題ありと考えて、正常に動作しているテスト環境に問題が発生しているユーザのハードウェアを一つずつ付け替えて、どれをつないだらエラーが発生するのか調べてみてはどうでしょうか?

機器を刷新しても発生するようであれば、電源(容量オーバーなどで電圧が不安定になっていないか)、ネットワーク回りで問題が無いか、といったところを疑うことになりますが、そうなるとユーザのシステム一式を別の場所でテストしてみる必要があります。

書き込まれている内容から私が思いつくものを述べてみました。既に実施されているかもしれませんがご参考まで。

投稿2016/02/05 05:47

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TEC_S

2016/02/05 10:50

確かに、周辺のハードウェアの連携に問題がある可能性も考えているのですが、、 それも踏まえ、検証方法を練って行ったほうが良さそうです。 ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問