рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдШрдЯрдирд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░реЛрдВ рдХреЗ рдЕрд╡рд▓реЛрдХрди рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рддрдЪреАрдд рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ред
рдЖрдЬ рдореИрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред
рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рддрдЪреАрдд рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИред рдкрд░рдВрдкрд░рд╛ рд╕реЗ, рд╣рдо
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ: "рдбрд┐рдмрдЧрд┐рдВрдЧ - рдкрддрд╛ рд▓рдЧрд╛рдирд╛, рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЙрдиреНрдореВрд▓рди"ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рдлрд▓ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рджреЛ рдЪреАрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ): рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдЪрд░ рдХрд╛ рдореВрд▓реНрдп рдЬрд╣рд╛рдВ рддреНрд░реБрдЯрд┐ рд╣реБрдИ, рд╕рд╛рде рд╣реА рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕: тАЛтАЛрдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдХреНрд░рдо, рдЧрд▓рдд рдПрдХ рддрдХред рдЙрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рднреА рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓ рд░рд╣рд╛ рд╣реИ: рдореБрдлреНрдд рдореЗрдореЛрд░реА рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ (рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐), рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рддрд┐рдмрдВрдз (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреА рд╕рдВрдЦреНрдпрд╛), рдФрд░ рдЗрд╕реА рддрд░рд╣, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдереЛрдбрд╝рд╛ рдкрд░реЗ рд╣реИред
рд╢реИрд▓реА рдХреЗ рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕
рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╡рд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдВрджрд░ "рдкреНрд░рд╛рдкреНрдд" рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдЪрд░ рдХреА рд╕рд╛рдордЧреНрд░реА (рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ рдкрд░) рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рддрд░реНрдХ (рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓, рд╢рд░реНрддреЛрдВ) рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддрд╛ рд╣реИ? рдпрд╣ рд╕рдмрд╕реЗ рд╡реНрдпрд╛рдкрдХ, рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ "рдХреБрд╢рд▓" рдбреАрдмрдЧрд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рдХреЛрдб рдореЗрдВ "рдкреНрд░рд┐рдВрдЯ" (рдкрд╛рдпрдерди 2.x рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдФрд░ рдкрд╛рдпрдерди 3.x рдореЗрдВ рдкреНрд░рд┐рдВрдЯ) рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рди рдХреЗрд╡рд▓ рд╢реБрд░реБрдЖрддреА рдпрд╣ рдкрд╛рдк рдХрд░рддреЗ рд╣реИрдВ: рдЙрдиреНрдирдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдХреНрд╕рд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд▓реНрджреА рд╕реЗ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ, рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдореЗрдВ, рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдШрдВрдЯреЛрдВ рдФрд░ рджрд┐рдиреЛрдВ рддрдХ рднреА рдлреИрд▓рддреА рд╣реИред рд╡реИрд╕реЗ, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ "рдЬрд░реНрдирд▓рд┐рдВрдЧ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рдореЗрдВ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рджрд░реНрдЬ рдХрд░рдирд╛ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдХрднреА-рдХрднреА рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдХреЛрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЫрд┐рдЯрдкреБрдЯ рд░реВрдк рд╕реЗ рд╣реЛрддреА рд╣реИрдВ, рдпрд╛ рдЬрдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдХреЗрд╡рд▓ рд▓рдВрдмреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд░рди (рд▓реЙрдиреНрдЪ рдХреЗ рджреЛ рд╕реЗ рддреАрди рд╕рдкреНрддрд╛рд╣ рдмрд╛рдж) рд╣реЛрддреА рд╣реИред
рд▓реЗрдХрд┐рди рд╣рдо рдкрд╛рдЗрдерди рдореЗрдВ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреАрдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рдпрд╛ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░реЗрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣
рд╕рдВрддрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рднреЗрдЬ рд╕рдХреЗрдВ: рд╕рднреА рд╕реНрдерд╛рдиреАрдп рдЪрд░, рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдЪрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдлрд┐рдЯ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рдореЗрдВред
рдкрд╛рдпрдерди рдбрд┐рдмрдЧрд░
рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреАрдмрдЧрд░ рд╣реЛрддрд╛ рд╣реИ:
рдкреАрдбреАрдмреА рдореЙрдбреНрдпреВрд▓ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рд▓реЗрдЦ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреАрдбреАрдмреА рдПрдХ рдЕрддреНрдпрдВрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдбрд┐рдмрдЧрд░ рд╣реИ рдФрд░ рдмрд╛рдХреА рд╕рдм, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ "рд╕рдЬрд╛рд╡рдЯ" рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ =)
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдирд╛рдо рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, pdb рдиреЗ gdb (GNU рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд┐рдмрдЧрд░) - C (рдФрд░ рди рдХреЗрд╡рд▓) рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбреАрдмрдЧрд░ рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдпрд╛ред рд╡реИрд╕реЗ, рдЕрдЬрдЧрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЛ gdb рдХреЗ рд╕рд╛рде рдбреАрдмрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдФрд░ рд▓рдВрдмрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬреЛ рд▓реЛрдЧ рднрд╛рд╖рд╛ рдХреЗ рдЙрдкрдХрд░рдг рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЬреЛ рд▓реЛрдЧ рдЕрдЬрдЧрд░ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╡реЗ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреАрдбреАрдмреА рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо (рдЗрд╕рдХреЗ рдкреАрдЖрдИрдбреА тАЛтАЛрдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ "рдСрди рдж рд╕реНрдкреЙрдЯ" рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдореИрдВ рдЕрдм рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ pdb рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛, рдпрд╣рд╛рдБ рдПрдХ рдЕрджреНрднреБрдд рд▓реЗрдЦ рд╣реИ рдбрдЧ рд╣реЗрд▓реНрдореИрди:
pdb - рд╕рдкреНрддрд╛рд╣ рд╕рдВрд╕рд╛рдзрди рдХреЗ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА
рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рдкрд░
рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдбреАрдмрдЧрд░ , рд▓реЗрдХрд┐рди рд╣рдм рдкрд░ рдЗрд╕рдХрд╛ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрд╡рд╛рдж:
pdb - рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдпреБрдЧрдкреБрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
xa4a рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рддред
Ipython рдкреАрдбреАрдмреА
рдореИрдВ рддреБрд░рдВрдд
IPython рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП
ipdb рдореЙрдбреНрдпреВрд▓ рд▓рдЧрд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ:
тЮЬ pip install ipython ipdb
IPython (рдФрд░ рдЗрд╕рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ ipdb) рдПрдХ "рдмреЗрд╣рддрд░" рдХрдВрд╕реЛрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░, рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдбрд┐рдмрдЧрд┐рдВрдЧ: рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ, рдСрдЯреЛ-рдкреВрд░рд╛ рдХрд░рдиреЗ, рдХрдорд╛рдВрдб рдЗрддрд┐рд╣рд╛рд╕, рдХрд┐рд╕реА рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧрддрд┐рд╢реАрд▓ рдЖрддреНрдордирд┐рд░реАрдХреНрд╖рдг, рдЬрд╛рджреВ рдХрд╛рд░реНрдпреЛрдВ, рдЙрдкрдирд╛рдореЛрдВ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рд╕реБрдзрд╛рд░ рдХреА рдкреВрд░реА рд╕реВрдЪреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдпрд╛ рд╕реАрдзреЗ IPython рдХрдВрд╕реЛрд▓ рд╕реЗ "рдЯрд╛рдЗрдк рдХрд░рдХреЗ" рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ? рдПрдХ рдЯреАрдо рдХреЗ рд░реВрдк рдореЗрдВред рдпрд╣ рд╕рдм рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рд░рд▓ рдФрд░ рдордЬреЗрджрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред
Ipdb рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ:
тЮЬ python -m ipdb script.py
тЮЬ ipdb script.py
рдпреЗ рдХрдорд╛рдВрдб рдбрд┐рдмрдЧрд░ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЦреЛрд▓реЗрдВрдЧреЗ, рдлрд┐рд░ рдЖрдк рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ: рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯреНрд╕ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдЪрд░рдг рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХреЗрд╡рд▓ рдЪрд▓рд╛рдПрдВ - рдЬрдм рдХреЛрдИ рдЕрдирд┐рдпреЛрдЬрд┐рдд рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдбреАрдмрдЧрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдмрд╣реБрдд рдЕрдзрд┐рдХ рдердХрд╛ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрддрд╛ рд╣реИ: рдЬрдм рддрдХ рдЖрдк рдЗрди рд╕рднреА "рдЕрдЧрд▓рд╛", "рдЪрд░рдг" рдХреЗ рд╕рд╛рде рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╣рд░ рдмрд╛рд░ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдмреНрд░реЗрдХ рдкреНрд╡рд╛рдЗрдВрдЯ ("рдмреНрд░реЗрдХ") рдбрд╛рд▓рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ:
import ipdb; ipdb.set_trace()
рдФрд░ рдлрд┐рд░ рдЬрдм рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреЙрдЬрд╝ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдбреАрдмрдЧрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдлрд┐рд░ рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдбреАрд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, set_trace рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рд╣реИред
рд╕реМрдВрджрд░реНрдпрд╢рд╛рд╕реНрддреНрд░ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрдВрдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо PEP8 рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХреЛрдИ рднреА рдореБрдЭреЗ рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреЛ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЖрд░реЛрдк рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЬреАрд╡рди рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдХреЛрдб рд╣реИ рдЬреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рдХрднреА рднреА рдкреНрд░рддрд┐рдмрджреНрдз рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╣реБрдХ рджреНрд╡рд╛рд░рд╛ рдзреНрдпрд╛рди рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдХрдорд┐рдЯ рдФрд░ рдкреБрд╢ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ PEP8 рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдХреЛрдб рдХреЛ рдСрдЯреЛ-рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ)ред рджреВрд╕рд░реЗ, рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдХреЛрдб рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдФрд░ рддреАрд╕рд░рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдкреАрдИрдкреА 8 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ: "рдП рдлреБрд▓рд┐рд╢ рдХрдВрд╕рд┐рд╕реНрдЯреЗрдВрд╕реА, рд▓рд┐рдЯрд┐рд▓ рдорд╛рдЗрдВрдбреНрд╕ рдХрд╛ рд╣реЙрдЬреЛрдмреНрд▓рд┐рди рд╣реИред"
рдкрд╛рдпрдерди рдбреАрдмрдЧрд░ рдХреЗ рдкрд╛рд╕ рдСрдкрд░реЗрд╢рди рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ set_trace рдлрд╝рдВрдХреНрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЗрд╕реЗ "рдкреЛрд╕реНрдЯрдорд╛рд░реНрдЯрдо" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: рдбреАрдмрдЧрд░ рдХреЛ рджрд┐рдП рдЧрдП рдЯреНрд░реЗрд╕рдмреИрдХ рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд░рдирд╛:
try: some_code() except: import sys import ipdb tb = sys.exc_info()[2] ipdb.post_mortem(tb)
рдпрд╛ рддреЛ:
import sys import ipdb def run_debugger(type, value, tb): ipdb.pm() sys.excepthook = run_debugger some_code()
"Some_code" рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдирдХреИрдкреНрдб рдЕрдкрд╡рд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбрд┐рдмрдЧрд░ рдХреЛ рдЙрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд╣рд╛рдВ рдЕрдкрд╡рд╛рдж рд╣реБрдЖред
рдбрд┐рдмрдЧ
рд╕реЗрдЯ_рдЯреНрд░реЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди
рдбрд┐рдмрдЧ рдореЙрдбреНрдпреВрд▓ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓
рдЖрдИрдкреАрдбреАрдмреА рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (рдбреАрдЖрдИрдЖрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд▓реНрдк) рдХреЛ
рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдбреАрдмрдЧрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд▓рд╛рдн рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╣реИ, рдмрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХрд╣реАрдВ рднреА рдПрдХ рдкрдВрдХреНрддрд┐ рдбрд╛рд▓реЗрдВ:
import debug
рдФрд░ рдЬрдм рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ ipdb рдбреАрдмрдЧрд░ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рджреЗрдЦреЗрдВ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
ipdbplugin
рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░, рдЗрд╕ рдмрд╛рд░, рдЙрдкрдпреЛрдЧреА рдкреБрд╕реНрддрдХрд╛рд▓рдп:
рдирд╛рдХ- ipdb ред рдЗрд╕рдХреА рдорджрдж рд╕реЗ, рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ (рдЕрдкрд╡рд╛рджреЛрдВ) рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд░ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдмрд╕ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде (рдХреНрдпрд╛ рдЖрдк рдирд╛рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? =)ред рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ ipdb рдбреАрдмрдЧрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рдХреБрдВрдЬреА "--ipdb" рдЬреЛрдбрд╝рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
тЮЬ nosetests
рдФрд░ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкреВрд░реНрдг рдХрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдВрдЬреА --ipdb-рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
тЮЬ nosetests --ipdb-failures
рдмреЗрд╢рдХ, рдЖрдк рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
тЮЬ nosetests --ipdb --ipdb-failures
рд╣рд░ рджрд┐рди рдореИрдВ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдЬреАрд╡рди рдХреА рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
WERKZEUG
рдлреНрд▓рд╛рд╕реНрдХ рдврд╛рдВрдЪреЗ рдХреЗ рд▓реЗрдЦрдХ рдФрд░ рдЖрдорддреМрд░ рдкрд░
рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ, рдЖрд░реНрдорд┐рди рд░реЙрдирд╛рдХрд░ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЕрджреНрднреБрдд рдкрд░рд┐рдпреЛрдЬрдирд╛, рдЬрд┐рд╕реЗ
рд╡реЗрд░реНрдХреЗрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбрдмреНрд▓реНрдпреВрдПрд╕рдЬреАрдЖрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдПрдХ
рд╢рд╛рдВрдд рдбрд┐рдмрдЧрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЯреНрд░реЗрд╕рдмреИрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕реАрдзреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреГрд╖реНрда рдкрд░ рдЯреНрд░реЗрд╕рдмреИрдХ рдХреЗ рдЙрдкрдпреБрдХреНрдд рд╕реНрдерд╛рди рдореЗрдВ рдкрд╛рдпрдерди рдХрдВрд╕реЛрд▓ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ:

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдмрд╕ рдЙрдЪрд┐рдд рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓рдкреЗрдЯреЗрдВ:
from werkzeug.debug import DebuggedApplication from myapp import app app = DebuggedApplication(app, evalex=True)
рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡реАрд░рдХреЗрдЬрдпреБрдЧ рднреА рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рдмрд╣рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдХрднреА рднреА рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХрд┐рд╕реА рднреА рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред
Django-pdb
рдПрдХ рдФрд░ рдЕрдЪреНрдЫрд╛ рдореЙрдбреНрдпреВрд▓, рдЗрд╕ рдмрд╛рд░ Django рдХреЗ рд▓рд┐рдП:
django-pdb ред рдпрд╣ рдЖрдкрдХреЛ рдбрд┐рдмрдЧрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рдЙрдкрдпреБрдХреНрдд GET рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
http://127.0.0.1:8000/app/view?ipdb ) рдпрд╛ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП:
тЮЬ python manage.py runserver
рдпрд╛ рдЕрдкрд╡рд╛рдж рд╣реЛрдиреЗ рдкрд░ рдбрд┐рдмрдЧрд░ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ (рдкреЛрд╕реНрдЯрдорд╛рд░реНрдЯрдо рдореЛрдб):
тЮЬ python manage.py runserver
рдпрд╛
POST_MORTEM = True
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВред
Django-рдПрдХреНрд╕рдЯреЗрдВрд╢рди
рд▓реЗрдХрд┐рди Django рдореЗрдВ
django-extension рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЬреЛ рдПрдХ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА
runserver_plus рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЗрд╕ рдмреИрдЯрд░реА рдХреЗ рд╕рд╛рде, рдЖрдк Django рдФрд░ Werkzeug (рдКрдкрд░ рджреЗрдЦреЗрдВ) рдХреЗ рд╕рд╛рде рджреЛрд╕реНрдд рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рдБрдЪ рд╕реМ рддреНрд░реБрдЯрд┐ рд╡рд╛рд▓реЗ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)
рдЗрд╕ рд╕рднреА рдЪрдорддреНрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ runserver_plus рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░реЗрдВ:
тЮЬ python manage.py runserver_plus
рдкрд╣рд░реЗрджрд╛рд░
рдПрдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдмреЗрд╢рдХ, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд▓рд╛рдЗрд╡ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд░рдирд╛ред рдпрд╣ рдХрднреА-рдХрднреА рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред
рдкрд╛рдпрдерди рдХреЗ рд╕рднреА
рд▓рд╛рднреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, "рдЯреЗрд▓реАрдкреИрдереА" рдореЙрдбреНрдпреВрд▓ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдордиреЗ-рд╕рд╛рдордиреЗ рд░рд╣рддрд╛ рд╣реИ "рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ !!! 11"ред
рд╕рдВрддрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЖрдкрдХреЛ
рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддреНрд░реБрдЯрд┐ рдХреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдкрд╛рда, рдПрдХ рдкреВрд░реНрдг рдЕрдкрд╡рд╛рдж рдЯреНрд░реЗрд╕ рдФрд░ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╕рднреА рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрдИ рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг (рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдУрдПрд╕), рд╕рднреА рдЕрдиреБрд░реЛрдзрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд╛рдВрдЫрд┐рдд рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред ред

рдкрд╣рдЪрд╛рди рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдореВрд╣реАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ "рдкрд▓реНрд╕" рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдорд░рдореНрдордд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрддрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд▓реЙрдЧрд┐рдВрдЧ рд╣реИред рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╕реНрдерд╛рди рдкрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЪрд░ рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕рдм рд╕рдВрддрд░реА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдкреНрд▓рд╕ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП!)ред
PuDB
рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдбрд┐рдмрдЧрд░:
PuDB рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдХрдВрд╕реЛрд▓ рдбреАрдмрдЧрд░ рд╣реИ:

рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ (рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ), рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╣реЗрдмрд░ рдкрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдиреЛрдЯ рдкрдврд╝реЗрдВ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
int22h рд╕реЗ
рдкрд╛рдпрдерди / Django рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдбреАрдмрдЧрд░ рдпрд╛ рдЕрдзрд┐рдХ рд╕рдореАрдХреНрд╖рд╛:
PuDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдпрдерди / Django рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ ред
Winpdb
рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдкрд╛рдпрдерди рдбрд┐рдмрдЧрд░, рдЗрд╕ рдмрд╛рд░ рдПрдХ рдкреВрд░реНрдг GUI рдХреЗ рд╕рд╛рде:
Winpdb :

рдЗрд╕рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ winpdb pdb рд╕реЗ 20 рдЧреБрдирд╛ рддреЗрдЬ рд╣реИ, рдФрд░ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рднреА рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддреГрдд рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
code.google.com/p/winpdb/wiki/DebuggingTutorial ред
рдЖрдИрдбреАрдИ
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдпреВрдирд┐рд╡рд░реНрд╕рд▓ "рд╣рд╛рд░реНрд╡реЗрд╕реНрдЯрд░" рдПрдХ рдЕрд▓рдЧ рд╢рдмреНрдж рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВ: рдЖрдИрдбреАрдИ, рдЬреЛ рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ, рдЗрд╕реЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рдиреЗ рдпрд╛ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреАрдмрдЧрд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВ рд╢рд╛рдпрдж рдкрд╛рдпрдерди рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдХрдИ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░
рдХрд░реВрдВрдЧрд╛ :
PyCharm ,
PyDev ,
Wing IDE рдФрд░
PTVS ред

рдЧреАрддрд╛рддреНрдордХ рд╡рд┐рд╖рдпрд╛рдВрддрд░рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдФрд░ рдЕрдкрдиреЗ рдЖрдк рдкрд░ рд╣рд╛рд╡реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрд╛ рдФрд░ рдХрдВрд╕реЛрд▓, рдФрд░ рдореЗрд░реЗ рдкрд╕рдВрджреАрджрд╛ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ (рдпрд╣ vim, emacs рдпрд╛ рдЙрджрд╛рддреНрдд рдкрд╛рда рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЧрддрд┐, рдЕрджреНрднреБрдд рд▓рдЪреАрд▓реЗрдкрди рдФрд░ рд╕реБрд╡рд┐рдзрд╛) рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрдо рд╕реЗ рдХрдо рдЗрди рдЕрджреНрднреБрдд рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдореМрдХрд╛ рджреЗрдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЖрдЬрдорд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЖрдИрдбреАрдИ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реВрдВ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рд╡реЗ рд╡рд╣рд╛рдВ рд╣реИрдВ, рдХрд┐ рд╡реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рд╕рдВрдкрд╛рджрдХ рд╕реЗ рд╕реАрдзреЗ рдирд┐рд░реНрдорд┐рдд рдбрд┐рдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рд╢рд╛рдВрдд рдФрд░ рд╢рд╛рдВрдд рд╣реИред
рдкрдврд╝реЗ рдФрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рджред
рд╡реНрд▓рд╛рджрд┐рдореАрд░ рд░реБрдбрдиреАрдЦ,
Mail.Ru рдХреИрд▓реЗрдВрдбрд░ рдХреЗ рддрдХрдиреАрдХреА рдирд┐рджреЗрд╢рдХ