X



あなたは正体不明のコードをどうデバッグする?
0001デフォルトの名無しさん
垢版 |
2022/04/26(火) 19:02:08.17ID:tXmweGEp
正体不明のコードをどうデバッグする?


obj.method(arg);
→ここでエラーが発生。


以下の調べ方の優先順序、調べる必要性の要不要を考えてください。

<前提条件>
・上記のコードの全てが自分にとって正体不明。
・`obj` を生成したクラスは正体不明。
ライブラリのクラスなのかプロジェクト内の開発メンバーが作成したクラスなのかも不明。
何をするためのオブジェクト,メソッドなのかも不明。
・`obj.method`を呼び出した場所のコードも正体不明。ライブラリ内なのか開発メンバーが作成したクラスなのかも不明。
メソッドの呼び出し側が何をするための箇所なのか不明。


<調べ方>
・1: 発生したエラーメッセージでググる
→期待する事: 上手く情報が見つかればすぐにエラーが解決できるかもしれない。

・2: `arg`の引数をログ出力して確認
→期待する事: エラーは引数が原因している可能性があるかもしれない。
問題解決の情報として重要と思われる。

・3: `obj`を生成したクラスは誰が作成したクラスかを調べる。

・4: `obj`を生成したクラスが何をするためのものなのか調べる。
→3の結果次第で一般作成ライブラリであるならばググる事ができる。

・5: `obj.method`の仕様として、引数と戻り値、何をするかを調べる。
0002デフォルトの名無しさん
垢版 |
2022/04/26(火) 19:02:24.41ID:tXmweGEp
・6: `obj.method`を呼び出した場所が誰が作成したコードか調べる。

・7: `obj.method`を呼び出し元のコードが何をしているかを調べる。

・8: `obj.method`呼び出し元のコードを呼び出し前の箇所をある程度遡ってコードを追う。

・9: `obj.method` の内部に入り、コードを追う、デバッグを仕込んで調べる。

・10: このメソッド呼び出し箇所のコード付近をいじっても解決しない可能性を疑う。
コンフィグファイル, データベース, ファイルシステム上の何らかのファイルの状態が適切かを調べる。

・11: このメソッドに与えられている`arg`を別のものに変えて色々実行してみる。
何が変化するかを観察する。

・12: `obj.method`の実行自体が不要である可能性を考える。
コメントアウトしてどうなるか、次にどこでエラーが発生するかを考える。


・13: それ以外の手法で調査(自由に決めてください)
0003デフォルトの名無しさん
垢版 |
2022/04/26(火) 19:15:23.36ID:wiDpnQKW
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━-┓
┃ ┌────────────────────────ーーー┐ ┃
┃ │            / ̄ ̄\                      │ ┃
┃ │          /  ヽ_  .\                    │ ┃
┃ │          ( ●)( ●)  |     ____            │ ┃
┃ │          (__人__)      |     /      \          .| ┃
┃ │          l` ⌒´    |  / ─    ─   \       │ ┃
┃ │         . {         |/  (●)  ( ●)  \      .| ┃
┃ │           {       / |      (__人__)      |     │ ┃
┃ │      ,-、   ヽ     ノ、\    ` ⌒´     ,/__      .| ┃
┃ │     / ノ/ ̄/ ` ー ─ '/><  ` ー─ ' ┌、 ヽ  ヽ、   │ ┃
┃ │    /  L_         ̄  /           _l__( { r-、 .ト、 . │ ┃
┃ │       _,,二)     /            〔― ‐} Ll  | l) ).│ ┃
┃ │       >_,フ      /               }二 コ\  Li‐' .| ┃
┃ │    __,,,i‐ノ     l              └―イ   ヽ |   . | ┃
┃ │                l                   i   ヽl   . | ┃
┃ └ーーー────────────────────────┘ ┃
┗-━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
             2022年04月26日 クソスレにて
0004デフォルトの名無しさん
垢版 |
2022/04/26(火) 21:33:59.17ID:pDv2eJMp
>・`obj` を生成したクラスは正体不明。
> ライブラリのクラスなのかプロジェクト内の開発メンバーが作成したクラスなのかも不明。
> 何をするためのオブジェクト,メソッドなのかも不明。

本当にこんな無能だったらプログラマを辞めるのがもっとも適切な解決策だな
0006デフォルトの名無しさん
垢版 |
2022/05/01(日) 09:44:22.93ID:RzOTsJGP
よく知らないものをDLしてソースツリーを展開したとき、

google ディレクトリがあったときのガッカリ感…


入れたくねーって思う…
レスを投稿する


ニューススポーツなんでも実況