タグ付けされた質問 「debugging」

デバッグとは、プログラムの実行中に、通常はデバッグツールを使用して、プログラムの状態を調べ、異常な動作を引き起こすバグを見つけようとするプロセスです。

10
バグを修正するすべての手段を使い果たした場合の対処方法
私は、クロスプラットフォームモバイルアプリケーション(1人のチーム-だから自分自身)に取り組んでいるジュニアプログラマー(これまでの4か月のキャリア経験)です。 このプログラム/アプリにはかなり大きなバグがあります(30種類のヘッダーファイル、それぞれ独自のcppファイルもあります)。私はバグで何が起こっているのかを正確に追跡し、それを修正しようとしています(いくつかのハックを使用してそれを機能させることさえ試みました)が、約12以上のソリューション(問題の原因について考えていること) )バグが何であるかを正確に追跡したり、バグを修正したりすることはできませんでした。 いくつかの幅広いテクニックのジュニアプログラマーにアドバイスはありますか(実行に行く、すべてのコードを紙に印刷し、ペンでそれを実行するなど)、このバグの支援に使用できますか? バグのコンテキストをもう少し説明します。クロスプラットフォームAPI Mosyncを使用します。特定の一連のアクションを実行すると、現在の画面ではなく、以前に表示された画面がまだポインター/キープレスイベントを受信して​​いるという現在の画面は再描画されません。 特定のシーケンス: -メニュー画面の表示-「前の注文ボタンを表示」をクリック -前の注文画面の表示-「ファイルの読み込み」をクリックしてメニューボタンをクリックして配信画面を開く -配信画面の表示-メニューボタンをクリックして 購入画面を表示-購入画面の表示-ここでのエラー、この画面への入力は表示されない/反応しない、リストビューはスクロールしない、ボタンはクリックに反応しない、リストビューのセルはクリックに応答しない 私はボード上のアドバイスを取ります、バグは毎回同じ手順に従って100%再現可能ですが、ポインターイベントがどのように送信されているのか、実際にはAPIの一部ではないためにどの画面に届く(または方法がわからない)。 また、私は私の仕事を別の目で見て、バグを指摘したいと思っていますが、私が1のチームであると言ったように、私の上司は私に指示し、彼は会社を所有し、アプリのアイデアを持っていますが、 c ++や最近の言語も知らない(cobal?全部だと思う)。会社の知的コード/財産を侵害/誇示せずに2番目の目を取得する方法に関するアドバイスはありますか? ...そして、この有給インターンシップを辞めることは選択肢ではありません。契約では、12分の1契約の6分の1の前に退職すると、年収の30%を支払う可能性があります。

3
「一般的な」デバッグ方法に関する理論や書籍はありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 私は多くのコンピューターサイエンスとエンジニアリングを読んで勉強しましたが、デバッグに関する本やデバッグ方法の理論はめったに見たこともありませんでした(確かに自分のデバッグ理論をいくつか開発しました)。 デバッグ理論や書籍はありますか?なぜですか?gdbを使用してデバッグする方法と、gdbの使用方法を読んで得た開発に関する最も役立つ情報を読むことができます。
12 debugging 

6
デバッグ:特定の修正が機能した理由の詳細を理解していますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 デバッグ時に、いくつかの変更を行うことがありますが、これらの変更がプログラムのバグを修正する理由が100%わかりません。いくつかのバグが発生した理由と、特定の変更がそれらのバグを排除した理由について、すべての詳細を理解することが不可欠ですか?それとも、修正がなぜ機能したのかについての詳細を実際に知らずにプログラムを動作させることが開発者の間で一般的ですか?
12 skills  debugging  bug 

7
なぜ学校はデバッガをカバーしないのですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 SO に関するさらに別の宿題の質問の後。大部分の学生は、デバッガーとは何か、またはデバッガーの使い方を知らないようです。デバッガの使用方法を知ることは、他のプログラミングの基礎とほぼ同じくらい重要だと思います。 問題はデバッグするべきではなく、プログラミングの基礎と一緒に最新のデバッグツールを使用する方法を教えますか?そうでない場合、なぜそうではない。

5
バイナリ形式をどのようにデバッグしますか?
バイナリビルダーのビルドをデバッグできるようにしたいと思います。現在、私は基本的に入力データをバイナリパーサーに出力し、次にコードを深く掘り下げて、入力から出力へのマッピングを出力し、出力マッピング(整数)を取得して、それを使用して対応する整数を見つけますバイナリで。かなり不格好で、入力と出力の間のマッピングを取得するには、ソースコードを深く変更する必要があります。 さまざまなバリアントでバイナリを表示できるようです(私の場合、入力にかなり近いため、8ビットチャンクで10進数として表示したいと思います)。実際、いくつかの数値は16ビット、いくつかの8、いくつかの32などです。したがって、これらの異なる数値のそれぞれが何らかの方法でメモリ内で強調表示された状態でバイナリを表示する方法があります。 可能なことを確認できる唯一の方法は、実際のバイナリ形式/レイアウトに固有のビジュアライザーを実際に構築する場合です。そのため、32ビット番号がシーケンスのどこにあるべきか、8ビット番号がどこにあるべきかなどを知っています。これは多くの作業であり、状況によっては注意が必要です。だからそれを行う一般的な方法があるのだろうか。 また、現在このタイプのことをデバッグする一般的な方法が何であるか疑問に思っているので、それから何を試すべきかについてのアイデアを得ることができるかもしれません。
11 debugging  binary 

5
バグの調査方法の学習[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 この難しさをどのように定義すればよいかさえ分かりません。就職する前に、数人の有望な従業員が私に対して行ったテストを思い出します。彼らは部屋のオブジェクトを選択し、そのオブジェクトが何であるかを自分で判断するのに役立つ質問をすることができます(20個の質問のように)。私はこれで途方もなく優れていたので(いや、謙虚さで高いポイントを獲得したことはありませんでした)、バグのトラブルシューティングは本当に上手だと思いました... しかし、私が最近見つけたものは次のとおりです。部屋にあるすべてのものを見るのは本当に簡単なので、そのような状況では本当に良いです。したがって、コンポーネントの一部の概念で問題に取り組むことができます。本質的に、「知らないことを知っている」。しかし、プログラミングでは、問題が私にとって完全に未知である多くの状況に遭遇します。私はそれが壊れていることを知っていますが、どのように壊れるかという概念はありません。私はすべての指示に従いました、私は技術をかなりよく知っています... 正直なところ、間違っている可能性のあるものを想像するのに苦労しているように感じるので、それらをテストし、できれば解決策を見つけることができます。 そのスキルを開発するにはどうすればよいですか?どうやら、私の想像上の限られた想像力が私のプロジェクトを破壊する可能性のある方法を思い付くために何をする必要がありますか?これで私を良くすることができるエクササイズ(おそらくパズル?)はありますか?おそらく最大の治療法は経験だけであることを知っています...しかし、できればプロセスを加速する手助けをしたいと思っています。一度に数時間、ぼんやりと私のコンピューター画面を見つめることは、ちょっと面白くないです...


5
非常に少ない情報でデバッグするためのヒント?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 私はかなり大きなコードベースを持つプロジェクトを継承しましたが、元の開発者がメールに返信することはめったにありません。いくつかの方法がありますが、すべてを知っているわけではありません。これらのパスに沿った多くの重複コード(たとえば、比較的同じことを行う5ページに含まれる機能ではなく、5ページにコピーされたコードです)、およびデータベース内のいくつかの微妙な問題(私たちは皆、スパゲッティコードを聞いたことがあります) 、しかしスパゲッティデータベースについて聞いたことはありますか?) これらすべてのことで、ほとんどの場合は問題なく対処できます。 問題は、クライアントがどこかでバグを見つけたときです。彼らは通常、最終的な問題のスクリーンショットを送信し、「これを見てください」と言います。間違っているページ上の特定のもの、および予想されるものを強調表示します。それ以上の情報はほとんど与えられず、彼らと話をしてもっと得ようとすること(結果を得るために彼らがしたことなど)は、歯を引っ張るようなものです。 基本的に、これは次のように要約されます。 大規模で複雑なコードベース 物事がうまくいかない多くの多くの方法 バグの発生に関する情報はほとんどありません 誰かがこの種のことをデバッグする方法についてのヒント、トリック、提案などを持っていますか?
11 debugging 

8
競合他社に秘密を公開せずに、PHP Webアプリケーションを安全にデバッグするにはどうすればよいですか?
この投稿を改善してみませんか?この質問に対する詳細な回答を提供します。これには、引用と、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 最近プログラムを作りました。2行のコードを削除するのを忘れました。その間違いは私に毎日一日あたり800ドルの費用がかかりました。 私はPHPでプログラミングをしていました。訪問者がプロキシを使用している場合、別の場所にリダイレクトされます。一部のコードにはioncubeが含まれているため、デバッガーの使用は不可能でした。プログラムは単にどこかにリダイレクトするだけなので、コードのどの部分が実行されるのかを確認するのは困難です。 だから私はどこにでもたくさんのデバッグ情報を置いた。とにかく後者を削除するつもりだった。 もちろん、デバッグする最も自然な方法は、デバッグ情報をファイルに入れることです。問題は私がプロキシをよく使用することです。そのため、プログラムを変更した後、filezillaを使用してテキストファイルをダウンロードする必要があります。多くの場合、テキストファイルには、表示する必要があると思われるものが表示されません。最後に、ウェブにエラーを表示することにしました。 デバッグモードを考えた。ただし、デバッグ情報の削除は忘れてしまいます。 たとえば、ユーザーが?debuggingmode = 1を実行する場合、デバッグモードを使用することを検討しました。しかし、どういうわけか私の競争相手は秘密のキーワードを推測できるのではないかと妄想的でした。 ほとんどのデバッグ情報を削除しました。1つは削除するのを忘れて、ユーザーが適切な国のプロキシを使用している場合にのみ表示されます。私は正しい国からの代理人を持っていないことがわかり、それを認識していませんでした。プログラムが24時間動作した後、それをメインドメインにアップロードしました。 私のライバルは、プロキシを使用して、デバッグコードを参照してください。彼はアイデアをコピーし、それが私が1日あたり$ 800を失った方法です。 振り返ってみると、どこが間違っていたのか本当にわかりません。私は細心の注意を払っています。それでも起こった。 競合他社に秘密を公開せずに、PHP Webアプリケーションを安全にデバッグするにはどうすればよいですか?
11 php  debugging 

11
デバッグとテストの違いは何ですか?
ソフトウェアテストの概要(Ammann&Offutt)は、p.32で5レベルのテスト成熟度モデルについて言及しています。 レベル0テストとデバッグの間に違いはありません。 レベル1テストの目的は、ソフトウェアが機能することを示すことです。 レベル2テストの目的は、ソフトウェアが機能しないことを示すことです。 レベル3テストの目的は、特定のものを証明することではなく、ソフトウェアを使用するリスクを減らすことです。 レベル4テストは、すべてのITプロフェッショナルがより高品質のソフトウェアを開発するのに役立つ精神的な規律です。 詳細については触れていませんが。デバッグとテストの違いは何ですか?

7
複雑なレガシーアプリに新しいバグを導入する確率を下げるために、どのようなアプローチを取ることができますか?
私が作業する場所では、コードが完全なスパゲッティである古いシステム(.NET 1)で開発(およびバグ修正)しなければならないことがよくあります-変​​数名、プログラム構造、コメントはほとんど考慮されていません。 このため、どのビットを変更する必要があるかを理解するには年齢がかかります。変更を加えたため、既存のソフトウェアを「壊す」ことがよくあります。私は本当に(同僚と)数か月かけてリファクタリングするのに費やしたいのですが、既存の開発者はどちらもニーズを理解できず、これに時間をかけることもできません(システムは巨大です)。 私が何かを修正するのに数日かかるので、私が他の何かを壊したことを発見するのに数日かかるので、私はそのコードに取り組む必要があることを恐れています。これは明らかに私を無能に見えるようにします-それで私はこれにどのように対処できますか?

13
プログラムが失敗しないことを保証できますか?
ここにシステムがあります。最近、システムによって生成されたレポートの数値の1つに誤った計算があります。私たちの経験では、このシステムで何年も問題やエラーに遭遇したことはありません。 このシステムの作成者はすでに行っているため、プログラムを追跡することはほとんどできません。しかし、入力データ、設定を確認し、それらが正しいことを確認しました。 今、私の質問は、論理的な理由なしにコンピュータプログラムが突然失敗するのでしょうか。サーバーマシンを叩くと、コンピューターが計算している数値の1つが別の数値になり、計算が間違ってしまいますか? 私はかなり狂っているという考えに同意しますが、知りたいのですが、問題がプログラムと入力ではなく、他のいくつかの要因によって引き起こされていることをどのようにして知ることができますか? PSこの狂ったシステムにはログがありません。
10 debugging 

3
console / stdoutへの出力は優れたデバッグ戦略ですか?
次のような関数があるとします。 public void myStart() { for (int i = 0; i<10; i++) myFunction(i); } private int myFunction(int a) { a = foo(a); a = bar(a); return a; } private int foo(int a) { //do something here //something gnarly here //etc return aValue; } private int bar(int a) { // do …
10 debugging 

5
サーバーの終了時にオブジェクトを正しく破棄する
大規模なC ++プロジェクトに取り組んでいます。REST APIを公開するサーバーで構成され、他の多くのサーバーで構成される非常に広範なシステムにシンプルでユーザーフレンドリーなインターフェースを提供します。コードベースは非常に大きく複雑であり、適切な設計を事前に行わずに時間をかけて進化しました。私の仕事は、新しいコードを実装し、古いコードをリファクタリング/修正して、より安定して信頼できるようにすることです。 現時点では、サーバーは、プロセスが終了しても終了も破棄もされない、長期間存続するオブジェクトを多数作成します。これにより、Valgrindはリーク検出にほとんど使用できなくなります。何千もの(疑わしい)正当なリークと「危険な」リークを区別することは不可能だからです。 私の考えは、すべてのオブジェクトが終了前に確実に破棄されるようにすることですが、私がこの提案をしたとき、私の同僚と上司は、OSがとにかくそのメモリを解放することを指摘し(誰にとっても明らかです)、オブジェクトを破棄することに反対しましたサーバーのシャットダウンを遅くします(現時点では、これは基本的にへの呼び出しですstd::exit)。私は、「クリーンな」シャットダウン手順を持っているからといって、それを使用しなければならないということを必ずしも意味しないと答えました。焦りを感じたらいつでも呼んでstd::quick_exitもいいしkill -9、ただプロセスを呼んでもいい。 彼らは、「ほとんどのLinuxデーモンとプロセスはシャットダウン時にわざわざメモリを解放しない」と答えました。私はそれを見ることができますが、私はすでにメモリ破損、二重解放、および初期化されていない変数を見つけたので、プロジェクトが正確なメモリデバッグを必要とすることも事実です。 あなたの考えは何ですか?私は無意味な努力を追求していますか?そうでない場合、同僚や上司をどのように説得できますか?もしそうなら、なぜ、そして代わりに私は何をすべきですか?
9 c++  debugging  memory 

2
ソケットと共有メモリを介して行われるプロセス間通信の長所と短所は何ですか?
プロセス間通信の多くのオプションのうち2つは次のようになる可能性があることを理解しています。 共有メモリ ソケット 実際、Javaアプリケーションをデバッグするために、Intellij Ideaがこれら2つのオプションを公開しているのを見ました。それぞれのアプローチの長所と短所を知りたいのですが。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.