|
1 | 1 | # Learn to Debug
|
2 | 2 | [//]: # (Version:1.0.0)
|
3 |
| -�f�o�b�O�̓v���O���}�ɂȂ邽�߂̊��b�ł��B���� "debug"�̍ŏ��̈Ӗ��̓G���[�����菜�����Ƃł����A���ۂɏd�v�ȈӖ��́A�v���O�����̎��s�ׂĒ��ׂ邱�Ƃł��B���ʓI�Ƀf�o�b�O�ł��Ȃ��v���O���}�[�͖ڂ������܂����B |
| 3 | +デバッグはプログラマになるための基礎です。動詞 "debug"の最初の意味はエラーを取り除くことですが、実際に重要な意味は、プログラムの実行を調べて調べることです。効果的にデバッグできないプログラマーは目が見えません。 |
4 | 4 |
|
5 |
| -���z���`�ҁA�v�A���́A���G���̗��_�Ȃǂ��f�o�b�O���������{�I���ƍl�����l�́A�v���O���}�[�����Ă��܂����B�����v���O���}�[�͗��z�I�Ȑ��E�ɏZ���ł��܂����B���Ȃ��������ł����Ă��A�����\�t�g�E�F�A���ЁAGNU�̂悤�ȑg�D�A�����т��Ȃ��̓����ɂ����ď����ꂽ�R�[�h�Ɉ͂܂��Ă��Ȃ����Ȃ��܂����B���̃R�[�h�̂قƂ��ǂ͕s���S�ł����A�s���S�ɕ����������Ă��܂��B���̃R�[�h�̎��s�����������@�\���Ȃ����A�킸���ȃo���v�͂��Ȃ����i���ɓ����̂Ă܂��B�����̏ꍇ�A���̉����͎����i�f�o�b�O�j�ɂ����Ă̂ݓ������܂��B |
| 5 | +理想主義者、設計、分析、複雑さの理論などがデバッグよりも基本的だと考える人は、プログラマーを働かせていません。働くプログラマーは理想的な世界に住んでいません。あなたが完璧であっても、大手ソフトウェア会社、GNUのような組織、およびあなたの同僚によって書かれたコードに囲まれていなければなりません。このコードのほとんどは不完全であり、不完全に文書化されています。このコードの実行を可視化する機能がなければ、わずかなバンプはあなたを永遠に投げ捨てます。多くの場合、この可視性は実験(デバッグ)によってのみ得られます。 |
6 | 6 |
|
7 |
| -�f�o�b�O�́A�v���O�������̂��̂ł͂Ȃ��A�v���O�����̎��s�Ɋւ������̂ł��B���Ȃ��������\�t�g�E�F�A���Ђ��牽�����w�������ꍇ�A�ʏ��͂��̃v���O���������邱�Ƃ͂ł��܂����B�������A�R�[�h���h�L�������g�ɏ������Ă��Ȃ��ꏊ�i�}�V���S�̂��N���b�V�������邱�Ƃ͈��ʓI�ős���ȗ��ł��j���h�L�������e�[�V�������~���[�g�����Ă����ꏊ���������܂��B�������ʓI�ɂ́A�G���[���쐬���A�������R�[�h�ׁA�G���[���ǂ̂悤�ɔ��������\���������̂�??�킩���܂����B�K�R�I�ɁA�����͂��Ȃ��������Ă����Ƃ����O���Ȃ萳�����Ȃ����ƁA���邢�͂��Ȃ����\�����Ă��Ȃ����Ԃ������������Ƃ��Ӗ����܂��B���ɂ́A�\�[�X�R�[�h�߂Ă��閂�@�����܂����삷�邱�Ƃ������܂��B�����łȂ��ꍇ�́A�f�o�b�O�����K�v�������܂��B |
| 7 | +デバッグは、プログラムそのものではなく、プログラムの実行に関するものです。あなたが大手ソフトウェア会社から何かを購入した場合、通常はそのプログラムを見ることはできません。しかし、コードがドキュメントに準拠していない場所(マシン全体をクラッシュさせることは一般的で壮大な例です)やドキュメンテーションがミュートされている場所が発生します。より一般的には、エラーを作成し、書き込んだコードを調べ、エラーがどのように発生する可能性があるのか??わかりません。必然的に、これはあなたが作っているという前提がかなり正しくないこと、あるいはあなたが予期していない状態が発生したことを意味します。時には、ソースコードを眺めている魔法がうまく動作することもあります。そうでない場合は、デバッグする必要があります。 |
8 | 8 |
|
9 |
| -�v���O�����̎��s�����������ɂ́A�R�[�h�����s���Ă��̃R�[�h���ώ@�ł����K�v�������܂��B���ʂɕ\�������Ă������́A�܂���2�̃C�x���g�Ԃ̒x���̂悤�ɁA���ꂪ�ڂɌ����邱�Ƃ������܂��B�����̏ꍇ�A�R�[�h���̂������̕ϐ��̏��ԁA���ۂɎ��s�����Ă����R�[�h�̍s�A�܂��͕��G�ȃf�[�^�\���ɂ킽���ē����̃A�T�[�V�������ێ������Ă��邩�ǂ����ȂǁA�ڂɌ����Ȃ����̂��܂܂��܂��B�������̉B���ꂽ���͖̂��炩�ɂ����Ȃ����Ȃ��܂����B |
| 9 | +プログラムの実行を可視化するには、コードを実行してそのコードを観察できる必要があります。画面に表示されているもの、または2つのイベント間の遅延のように、これが目に見えることがあります。多くの場合、コード内のいくつかの変数の状態、実際に実行されているコードの行、または複雑なデータ構造にわたって特定のアサーションが保持されているかどうかなど、目に見えないものが含まれます。これらの隠されたものは明らかにされなければなりません。 |
10 | 10 |
|
11 |
| -���s�v���O������ "nnards"�ׂ����ʓI�ȕ��@�́A���̂悤�ɕ��ނł��܂��B |
| 11 | +実行プログラムの "nnards"を調べる一般的な方法は、次のように分類できます。 |
12 | 12 |
|
13 |
| -- �f�o�b�O�c�[�����g�p���āA |
14 |
| -- Printlining - �v���O�������ꎞ�I�ɕύX���܂��B�ʏ��A�������o�͂����s���lj����܂��B |
15 |
| -- ���M���O - �v���O�����̎��s�ɉi���I�ȃE�B���h�E�����O�̌`�ō쐬���܂��B |
| 13 | +- デバッグツールを使用して、 |
| 14 | +- Printlining - プログラムを一時的に変更します。通常、情報を出力する行を追加します。 |
| 15 | +- ロギング - プログラムの実行に永続的なウィンドウをログの形で作成します。 |
16 | 16 |
|
17 |
| -�f�o�b�M���O�c�[���́A���肵�ė��p�\�ȏꍇ�͑f���炵���ł����A�������C�e�B���O�ƃ��M���O�͂����ɏd�v�ł��B�f�o�b�O�c�[���͌����J���ɒx�����Ƃ邱�Ƃ��������߁A���ł����p�ł��Ȃ��\���������܂��B�����ɁA�f�o�b�O�c�[���������Ƀv���O�����̎��s���@���ύX�����\�������邽�߁A�K���������ۓI�ł͂Ȃ��ꍇ�������܂��B�Ō��ɁA�傫�ȃf�[�^�\���ɑ����A�T�[�V�����̃`�F�b�N�A�R�[�h�̋L�q�A�v���O�����̎��s�̕ύX�ȂǁA�������̎��ނ̃f�o�b�O�������܂��B�f�o�b�O�c�[�������肵�Ă����Ƃ��Ƀf�o�b�O�c�[�����g�p�������@���m���Ă������Ƃ͗ǂ����Ƃł����A����2�̕��@���g�p�ł��邱�Ƃ��d�v�ł��B |
| 17 | +デバッギングツールは、安定して利用可能な場合は素晴らしいですが、印刷ライティングとロギングはさらに重要です。デバッグツールは言語開発に遅れをとることが多いため、いつでも利用できない可能性があります。さらに、デバッグツールが微妙にプログラムの実行方法を変更する可能性があるため、必ずしも実際的ではない場合があります。最後に、大きなデータ構造に対するアサーションのチェック、コードの記述、プログラムの実行の変更など、いくつかの種類のデバッグがあります。デバッグツールが安定しているときにデバッグツールを使用する方法を知っておくことは良いことですが、他の2つの方法を使用できることが重要です。 |
18 | 18 |
|
19 |
| -�������̏��S�҂́A�R�[�h���ύX�����K�v�������Ƃ��Ƀf�o�b�O�������Ă��܂��B�����͗����ł��� - �����͒T���I���p�̂悤�Ȃ��̂ł��B�������A���Ȃ��̓R�[�h���˂��h���ăW�����v�����邱�Ƃ��w�Ȃ����Ȃ��܂����B���Ȃ��͂����������āA���Ȃ����ꎞ�I�ɍs�����Ƃ͂������������������͉̂����Ȃ����Ƃ𗝉����邱�Ƃ��w�Ȃ����Ȃ��܂����B���̋��|���������ꍇ�́A�����^�[���T���Ă��������B���̋��|�ւ̕q���Ȏn�܂��ŁA�����̗D�ꂽ�v���O���}�[�������܂��B |
| 19 | +いくつかの初心者は、コードを変更する必要があるときにデバッグを恐れています。これは理解できる - それは探索的手術のようなものです。しかし、あなたはコードを突き刺してジャンプさせることを学ばなければなりません。あなたはそれを試して、あなたが一時的に行うことはそれを悪化させるものは何もないことを理解することを学ばなければなりません。この恐怖を感じる場合は、メンターを探してください。この恐怖への敏感な始まりで、多くの優れたプログラマーを失います。 |
20 | 20 |
|
21 | 21 | Next [How to Debug by Splitting the Problem Space](02-How-to-Debug-by-Splitting-the-Problem-Space.md)
|
0 commit comments