Ачааллж байна...
Өмнөх хичээлд бид debugging-ийн аргачлалыг сурч, order_total-ийн нуусан алдааг print()-ээр олсон. Мөн print()-ийн хязгааруудыг шударгаар нэрлэсэн: шалгалт бүр кодыг өөрчилж, дахин ажиллуулахыг шаарддаг, давталтад гаралт үерлэдэг, зөвхөн урьдчилан таамагласан зүйлээ л хардаг. Энэ хичээлд эдгээр хязгаарыг даван туулах хэрэгслийг сурна: VS Code-ийн debugger. Debugger бол программыг хүссэн мөрөнд нь зогсоож, тэр мөчид бүх хувьсагчийн утгыг харуулж, дараа нь мөр мөрөөр нь урагшлуулах боломж олгодог хэрэгсэл юм. Кодонд нэг ч мөр нэмэх шаардлагагүй.
Энэ бол тохиргооны хичээл тул алхам бүр дугаарлагдсан, дэлгэц бүрийг тайлбарласан, асуудал гарч болох газар бүрт шийдлийг нь бичсэн. Эхлээд VS Code-д шаардлагатай өргөтгөлүүд байгаа эсэхийг шалгаж, зөв Python-ийг сонгоно. Дараа нь өмнөх хичээлийн order_total-ийн алдааг зориуд буцааж оруулж, энэ удаад debugger-ээр олно: эхний мөрөнд зогсож, функцийн дотор орж, давталтын алхам бүрт subtotal-ийн утга хэрхэн өөрчлөгдөхийг шууд харна. Эцэст нь нөхцөлтэй breakpoint, Debug Console зэрэг хэдэн хүчирхэг боломжтой танилцана.
Хөлбөмбөгийн тэмцээнд маргаантай мөч гарахад шүүгч бичлэгийг дахин үздэг. Тэр бичлэгийг хүссэн мөчид нь зогсоож, кадр кадраар урагшлуулж, тоглогч бүрийн байрлалыг томруулж харж чадна. Бодит хурдаар хурдан болж өнгөрсөн, нүдэнд баригдаагүй зүйл удаашруулсан бичлэгт тод харагддаг. Шүүгч "хэн нэгэн бөмбөгт гараараа хүрсэн байх" гэж таахгүй, яг тэр кадрыг олж, нүдээрээ харна.
Debugger бол таны программын удаашруулсан бичлэг. Программ ердийн үед секундын мянганы нэгд мянга мянган мөр ажиллуулж, бид зөвхөн эцсийн үр дүнг хардаг. Debugger-ээр та программыг хүссэн мөрөнд нь зогсоож, тэр мөчийн бүх хувьсагчийг харж, дараа нь нэг мөр, нэг мөрөөр урагшлуулна. print() бол бичлэгийн цөөн кадрыг хэвлэж авахтай адил: аль кадр хэрэгтэйг урьдчилан таах ёстой. Debugger бол бүх бичлэг таны гарт.
VS Code-ийн Python debugging нь Microsoft-ын хоёр өргөтгөлөөр ажилладаг: Python өргөтгөл болон Python Debugger өргөтгөл. Өмнөх сургалтуудад Python өргөтгөлийг суулгасан байх ёстой бөгөөд тэр нь ихэвчлэн Python Debugger-ийг ч хамт суулгадаг. Гэхдээ шалгая.
VS Code-ийн зүүн талын хэрэгслийн самбараас дөрвөлжин хэлбэртэй Extensions icon-ийг дарна уу, эсвэл Ctrl+Shift+X товчийг зэрэг дарна уу. Хайлтын талбарт “Python Debugger” гэж бичнэ үү. Жагсаалтад Microsoft-ын “Python Debugger” өргөтгөл гарч ирнэ. Хэрвээ түүний хажууд “Install” товч байвал дарж суулгана уу. Хэрвээ товч байхгүй, оронд нь араа icon байвал аль хэдийн суусан байна. Мөн “Python” гэж хайж, Microsoft-ын Python өргөтгөл суусан эсэхийг ижил аргаар шалгаарай.
[Зураг: Extensions самбар, Microsoft-ын Python Debugger өргөтгөл]
Хэрвээ хайлтын үр дүнд ижил нэртэй олон өргөтгөл гарвал нийтлэгчийн нэр “Microsoft” байгаа эсэхийг заавал шалгаарай. Өөр нийтлэгчдийн өргөтгөлүүд энэ хичээлийн тайлбараас өөрөөр ажиллаж магадгүй.
Debugger таны кодыг аль Python-оор ажиллуулахаа мэдэх хэрэгтэй. Хэрвээ VS Code таны venv-ийн биш, компьютерийн ерөнхий Python-ийг ашиглавал venv-д суулгасан package-ууд олдохгүй. VS Code-д pytest-dadlaga фолдероо нээж, Ctrl+Shift+P дарна уу. Дээд хэсэгт command хайх талбар нээгдэнэ. “Python: Select Interpreter” гэж бичээд түүнийг сонгоно уу.
Python-ийн жагсаалт гарч ирнэ. Тэдгээрийн дотор “venv” гэсэн бичигтэй, замд нь “.\venv\Scripts\python.exe” орсон хувилбарыг сонгоно уу. Ихэвчлэн VS Code түүнийг “Recommended” буюу "санал болгож буй" гэж тэмдэглэдэг.
[Зураг: Python: Select Interpreter жагсаалт, venv-ийн Python сонгосон]
Сонгосны дараа VS Code-ийн доод мөрний баруун хэсэгт Python-ийн хувилбар болон “venv” гэсэн бичиг харагдах ёстой. Энэ бичиг дээр дарж хүссэн үедээ дахин сонгож болно.
Хэрвээ жагсаалтад venv харагдахгүй бол “Enter interpreter path...” сонгоод, дараа нь “Find...” дарж pytest-dadlaga\venv\Scripts фолдер доторх python.exe-г сонгоно уу. Хэрвээ venv фолдер өөрөө байхгүй бол 7.2 дугаар хичээлийн Алхам 1-ээр үүсгэнэ үү.
Өмнөх хичээлийн order_total-ийн алдааг зориуд буцааж оруулъя, ингэснээр debugger-ийн ялгааг шууд харьцуулж болно. order.py-ийг нээж, давталтын мөрийг алдаатай хэлбэрт нь оруулна уу.
python
for name, price, qty in items:
subtotal = line_total(price, qty)Debugger-ээр ажиллуулах жижиг script хэрэгтэй. Үндсэн фолдерт debug_order.py нэртэй файл үүсгэнэ үү.
python
from order import order_total
items = [("талх", 2000, 2), ("сүү", 3000, 1)]
result = order_total(items)
print("Нийт:", result)Эхлээд ердийн аргаар ажиллуулъя.
Command:
python debug_order.pyГаралт:
Нийт: 3300Алдаа буцаж ирлээ: 7700-ийн оронд 3300. Энэ удаад print нэмэлгүйгээр олно.
Breakpoint бол "программ энэ мөрөнд хүрэхэд зогс" гэсэн тэмдэг юм. debug_order.py-ийг editor-т нээлттэй байлгаад, result = order_total(items) мөрийн дугаарын зүүн талын хоосон зурвас дээр хулганаа аваачна уу. Бүдэг улаан цэг гарч ирнэ. Тэнд дарахад цэг тод улаан болно. Энэ бол таны анхны breakpoint.
[Зураг: мөрийн дугаарын хажуудах улаан breakpoint цэг]
Breakpoint-ийг арилгахын тулд улаан цэг дээр дахин дарна. Мөн курсорыг мөрөн дээр тавиад F9 дарж breakpoint тавих, арилгах боломжтой.
debug_order.py идэвхтэй таб байгаа эсэхийг шалгаарай: F5 нь яг одоо нээлттэй байгаа файлыг ажиллуулдаг. F5 товчийг дарна уу.
Анх удаа F5 дарахад VS Code танаас хоёр асуулт асууж магадгүй. Эхнийх нь дээд хэсэгт “Select debugger” гэсэн жагсаалт: “Python Debugger”-ийг сонгоно уу. Хоёр дахь нь debug тохиргооны жагсаалт: “Python File” буюу "одоо идэвхтэй Python файлыг debug хийх" гэсэн утгатай сонголтыг сонгоно уу. VS Code-ийн хувилбараас хамаараад энэ сонголтын бичиг “Python Debugger: Current File” гэх мэт бага зэрэг өөр байж болно. Хамгийн гол нь “current file” буюу "одоогийн файл" гэсэн утгатай сонголт.
[Зураг: “Select debugger” жагсаалт ба “Python File” сонголт]
Хэдэн секундын дараа VS Code-ийн дүр төрх өөрчлөгдөнө. Үүнийг нэг нэгээр нь харцгаая.
[Зураг: breakpoint дээр зогссон debugger-ийн бүхэл дэлгэц]
result = order_total(items) мөр шар дэвсгэртэй болж, зүүн талд нь шар сум гарч ирсэн. Энэ нь "программ энд зогсож байна" гэсэн утгатай. Нэг маш чухал нарийн зүйл: шар мөр бол дараа нь ажиллах мөр, хараахан ажиллаагүй. order_total хараахан дуудагдаагүй, result хараахан байхгүй.
Дээд хэсэгт жижиг хэрэгслийн мөр гарч ирсэн: энэ бол debug toolbar, удахгүй түүний товч бүрийг сурна. VS Code-ийн доод мөр улбар шар өнгөтэй болсон нь debug горимд байгааг заана. Доод хэсэгт “Python Debug Console” нэртэй terminal нээгдсэн, программын print-ийн гаралт тэнд харагдана.
Зүүн талын самбар “Run and Debug” болж өөрчлөгдсөн бөгөөд дөрвөн хэсэгтэй: VARIABLES, WATCH, CALL STACK, BREAKPOINTS. Хамгийн чухал нь VARIABLES буюу хувьсагчид. Түүний доор “Locals” гэсэн хэсэг байх бөгөөд энэ мөчид байгаа хувьсагчдыг харуулна. Тэнд items байна, хажуудах сумыг дарахад жагсаалтын хоёр элемент, tuple бүрийн гурван утга нээгдэнэ. result байхгүй, учир нь шар мөр хараахан ажиллаагүй. Мөн Locals-д Python-ий нуугдмал тусгай хувьсагчид, “special variables” гэх мэт, харагдаж болно, тэдгээрийг тоохгүй байж болно.
Шалгах цэг: Шар мөр breakpoint дээр, VARIABLES хэсэгт items харагдаж байна.
Үргэлжлүүлэхээсээ өмнө toolbar-ийн товчнуудыг танилцуулъя. Зүүнээс баруун тийш дараалал нь ихэвчлэн ийм.
Continue (F5) нь программыг дараагийн breakpoint хүртэл, эсвэл дуустал ердийн хурдаар үргэлжлүүлнэ. Step Over (F10) нь шар мөрийг ажиллуулаад дараагийн мөрөнд зогсоно: хэрвээ мөрөнд функцийн дуудлага байвал тэр функцийг бүхэлд нь ажиллуулаад, дотор нь орохгүй. Step Into (F11) нь шар мөрөнд функцийн дуудлага байвал тэр функцийн дотор орж, эхний мөрөнд нь зогсоно. Step Out (Shift+F11) нь одоогийн функцийн үлдсэн хэсгийг ажиллуулаад, түүнийг дуудсан газар руу буцаж зогсоно. Restart (Ctrl+Shift+F5) нь программыг эхнээс нь дахин эхлүүлнэ. Stop (Shift+F5) нь debugging-ийг зогсооно.
Step Over ба Step Into хоёрын ялгаа хамгийн чухал. Зүйрлэлээр бол Step Over нь "энэ кадр доторх үйл явдлыг бүхэлд нь өнгөрөө", Step Into нь "энэ кадр доторх үйл явдлыг томруулж, түүнийг ч мөн кадр кадраар үз". Хэрвээ функц таны сэжигтэн бол Step Into, сэжигтэн биш бол Step Over.
order_total бол бидний сэжигтэн. F11 буюу Step Into дарна уу.
Editor order.py руу шилжиж, шар мөр subtotal = 0 дээр зогсоно. Бид order_total-ийн дотор байна. VARIABLES-ийн Locals одоо өөр зүйл харуулж байна: зөвхөн items, учир нь энэ функцийн доторх хувьсагчид харагдана. debug_order.py-ийн хувьсагчид энд харагдахгүй, тэд өөр функцийн Locals. subtotal хараахан байхгүй, учир нь шар мөр хараахан ажиллаагүй.
F10 буюу Step Over дарна уу. Шар мөр for мөр рүү шилжинэ. Locals-д subtotal = 0 гарч ирсэн.
F10 дарна уу. Шар мөр давталтын доторх subtotal = line_total(price, qty) мөр рүү шилжинэ. Locals-д давталтын хувьсагчид гарч ирсэн: name = 'талх', price = 2000, qty = 2. Одоо бид давталтын эхний алхамд байна.
Шалгах цэг: order.py-ийн давталтын дотор зогссон, Locals-д name = 'талх' харагдаж байна.
F10 дарна уу. Шар мөрийн line_total дуудагдаж, үр дүн нь subtotal-д онооддог. Locals-д subtotal = 4000 болсон бөгөөд саяхан өөрчлөгдсөн утгыг VS Code ихэвчлэн өнгөөр онцолдог. Одоог хүртэл бүх зүйл зөв.
F10 дарна уу. Шар мөр for руу буцна. F10 дарна уу. Шар мөр давталтын доторх мөр рүү дахин орж, Locals-д name = 'сүү', price = 3000, qty = 1 болно. subtotal = 4000 хэвээр байна: талхны дүн. Одоо анхааралтай хараарай.
F10 дарна уу. subtotal = 3000 болж өнгөөр онцлогдлоо.
Энэ бол алдаа, бидний нүдний өмнө. subtotal 4000-аас 7000 болох ёстой байсан, гэтэл 3000 болсон: сүүний дүн талхныхыг дарж бичсэн. Шар мөрийн код subtotal = line_total(price, qty) бөгөөд энэ мөр утгыг нэмэхгүй, солиж байна. Өмнөх хичээлд print()-ээр олсон дүгнэлтэд бид кодонд нэг мөр ч нэмэлгүй, дахин нэг ч удаа ажиллуулалгүй хүрлээ. Мөн бид урьдчилан “subtotal-ийг хэвлэе” гэж таамаглах шаардлагагүй байсан: бүх хувьсагч алхам бүрт харагдаж байсан.
[Зураг: давталтын хоёр дахь алхамд subtotal = 3000 өнгөөр онцлогдсон Locals]
Шалгах цэг: subtotal 4000-аас 3000 болж солигдохыг Locals-д харсан.
Дуусгахаасаа өмнө CALL STACK хэсгийг хараарай. Тэнд хоёр мөр байна: дээд мөрөнд order_total ба order.py, доод мөрөнд <module> ба debug_order.py. Энэ бол дуудлагын стек: "яг одоо order_total дотор байна, түүнийг debug_order.py-ийн модулийн түвшний код дуудсан". Доод мөр дээр дарвал editor debug_order.py руу шилжиж, VARIABLES тэр түвшний хувьсагчдыг, items-ийг харуулна. Дээд мөр дээр дарвал буцаж order_total руу очно.
[Зураг: CALL STACK хэсгийн хоёр мөр]
Энэ стек танд танил санагдаж магадгүй. 6.1 дүгээр хичээлээс хойш уншиж ирсэн traceback-ууд яг ийм стекийг текстээр харуулдаг: аль функц аль функцийг дуудсан. 10.3 дугаар хичээлд олон давхар стекийг traceback-аар гүнзгий уншина. Debugger-ийн давуу тал нь стекийн давхар бүрийн хувьсагчдыг шууд нээж харж болдог явдал.
F5 буюу Continue дарна уу. Программ үлдсэн хэсгийг ердийн хурдаар ажиллуулж дуусна. Python Debug Console-д "Нийт: 3300" гарч, debug toolbar алга болж, доод мөр хэвийн өнгөндөө буцна.
Одоо алдааг засна уу. order.py-ийн мөрийг subtotal += line_total(price, qty) болгож хадгалаад, F5-аар дахин debug хийнэ үү, эсвэл breakpoint-ийг арилгаад ердийн аргаар ажиллуулна уу.
Command:
python debug_order.py
pytestГаралт:
Нийт: 7700
...
============================= 38 passed in 0.06s ==============================Алдаа засагдсан, бүх тест ногоон. debug_order.py бол түр script тул хүсвэл устгаж болно.
Шалгах цэг: Программ 7700 гаргаж, бүх тест давсан.
Step Out ба буцаах утга
Debugger-ийг debug_order.py-ийн breakpoint дээр дахин эхлүүлж, F11-ээр order_total руу орно уу. F10-аар давталтын доторх мөр хүртэл явж, дахин F11 дарна уу: энэ удаад line_total-ийн дотор орно. Locals-д price ба qty харагдана. Одоо line_total бол сэжигтэн биш гэдэг нь тодорхой болсон гэж бодъё. Shift+F11 буюу Step Out дарна уу: функцийн үлдсэн хэсэг ажиллаж, order_total руу буцна. Debugger-ийн тохиргооноос хамаараад Locals-д “(return) line_total” гэх мэт мөр гарч, функцийн буцаасан утгыг харуулж болно. Step Out бол санамсаргүй орсон функцээс хурдан гарах арга.
Нөхцөлтэй breakpoint
Өмнөх хичээлд print()-ийн нэг хязгаар нь давталтад гаралт үерлэх гэж ярьсан. Мянган бараатай захиалгад асуудал зөвхөн нэг тодорхой бараан дээр гарч байвал breakpoint мянган удаа зогсох нь ч ядаргаатай. Үүнд нөхцөлтэй breakpoint бий. order.py-ийн давталтын доторх мөрөнд breakpoint тавиад, улаан цэг дээр баруун товч дарж “Edit Breakpoint...” сонгоно уу. Мөрийн доор жижиг талбар нээгдэнэ. Тэнд name == "сүү" гэж бичээд Enter дарна уу. Цэг дотроо тэмдэгтэй болно.
[Зураг: нөхцөлтэй breakpoint засах талбар]
Одоо debug_order.py-ийг F5-аар ажиллуулахад debugger талхны давталтыг алгасаж, зөвхөн name нь "сүү" байх үед зогсоно. Нөхцөл бол ердийн Python илэрхийлэл тул qty >= 10 эсвэл subtotal > 5000 гэх мэт ямар ч нөхцөл бичиж болно. Энэ бол print()-ийн үерийн шийдэл: зөвхөн сонирхолтой кадр дээр зогсох.
Debug Console: зогссон программтай ярилцах
Программ breakpoint дээр зогссон үед доод хэсгийн “DEBUG CONSOLE” табыг нээнэ үү. Энэ бол зогссон программын дотор ажилладаг Python. Доод талбарт subtotal * 2 гэж бичээд Enter дарвал тухайн мөчийн subtotal-ийн хоёр дахин утгыг харуулна. line_total(500, 10) гэж бичвэл функцийг шууд дуудаж, 4750 гэж харуулна. Энэ нь кодыг өөрчлөлгүйгээр, программыг дахин эхлүүлэлгүйгээр таамаглал шалгах хамгийн хурдан арга. Өмнөх хичээлийн аргачлалын "шалгах" алхмыг яг зогссон мөчид нь хийх боломж.
WATCH хэсэг ч ижил санаатай: тэнд “+” дарж subtotal эсвэл ямар ч илэрхийлэл нэмбэл алхам бүрт түүний утгыг байнга харуулна.
Алдаа гарах мөчид автоматаар зогсох
Debugger-ийн бас нэг хүчирхэг боломж: программ алдаагаар унах үед тэр мөчид нь автоматаар зогсдог. debug_order.py-ийн агуулгыг түр солиорой.
python
from prices import apply_discount
print(apply_discount(1000, 150))Ямар ч breakpoint тавилгүйгээр F5 дарна уу. Debugger prices.py-ийн raise ValueError(...) мөрөнд зогсож, тэр мөрийн доор алдааны төрөл болон мессежийг харуулсан хайрцаг гарна. Locals-д price = 1000, percent = 150 харагдана. Алдаа гарсан мөч, түүний бүх нөхцөл таны өмнө. 7.4 дүгээр хичээлийн "код огт унах" төрлийн алдаануудад энэ нь traceback уншихаас ч илүү шууд: зөвхөн хаана унасныг биш, тэр мөчид бүх хувьсагч ямар утгатай байсныг харуулна. Stop дарж зогсоогоод, debug_order.py-ийг устгана уу.
Тестийг debug хийх
VS Code тестийг ч debugger-ээр ажиллуулж чадна. Зүүн талын хэрэгслийн самбарт колбоны хэлбэртэй Testing icon бий. Анх удаа нээхэд VS Code тестийн хэрэгслийг тохируулахыг санал болгоно: “Configure Python Tests” сонгоод, “pytest”, дараа нь tests фолдерыг сонгоно уу. Үүний дараа таны бүх тест мод хэлбэрээр жагсагдана. Аль ч тестийн мөрөн дээр баруун товч дарж “Debug Test” сонговол тэр тест debugger-тэй ажиллаж, таны тавьсан breakpoint-уудад зогсоно. Энэ нь унасан тестийн доторх нөхцөлийг шууд харах маш тохиромжтой арга. VS Code-ийн хувилбараас хамаараад энэ хэсгийн цэс, бичиг бага зэрэг өөр байж болно.
Хүсвэл өмнөх хичээлийн "туршаад үзээрэй" хэсгийн алдааг, line_total-ийн “qty >= 10”-ийг “qty > 10” болгох, энэ удаад debugger-ээр олж үзээрэй. Арван өндөгтэй захиалгыг ажиллуулдаг жижиг script бичиж, line_total-ийн if мөрөнд breakpoint тавиад, Locals-д qty-ийн утгыг харж, Debug Console-д qty > 10 болон qty >= 10 хоёрыг бичиж харьцуулаарай. Хоёр аргыг, print ба debugger, хэр хурдан, хэр тодорхой байсныг өөрөө харьцуулж мэдрээрэй. Дууссаны дараа алдааг засаж, тестүүдийг ажиллуулаарай.
F5 дарахад debugger зогсолгүй дуусах. Хамгийн түгээмэл шалтгаан нь буруу файл: F5 яг одоо идэвхтэй табын файлыг ажиллуулдаг. Хэрвээ order.py идэвхтэй байхад F5 дарвал VS Code order.py-ийг ажиллуулна. Тэр нь зөвхөн функцуудыг тодорхойлдог тул юу ч хийлгүй дуусна, breakpoint-ууд хэзээ ч хүрэгдэхгүй. debug_order.py-ийн таб дээр дараад F5 дарна уу. Хоёр дахь шалтгаан нь breakpoint программын хэзээ ч хүрдэггүй мөрөнд байх, жишээ нь хэзээ ч дуудагддаггүй функцийн дотор.
Breakpoint саарал, хөндий цэг болох. Хэрвээ debug горимд улаан цэг саарал, хөндий болвол debugger тэр breakpoint-ийг баталгаажуулж чадахгүй байна. Ихэнхдээ энэ нь файл ажиллаж буй программд хамаагүй үед, эсвэл буруу Python сонгогдсон үед гардаг. Алхам 2-ын interpreter-ийг шалгаж, breakpoint тавьсан файл таны ажиллуулж буй программын нэг хэсэг эсэхийг баталгаажуулаарай.
“Debug stopped” гэж шууд зогсох. Зарим компьютерт debugger эхлэнгүүтээ ямар ч алдааны мессежгүйгээр зогсдог. Энэ нь ихэвчлэн компьютерийн ерөнхий Python-той холбоотой асуудал бөгөөд venv-ийн Python-ийг сонгоход ихэнхдээ шийдэгддэг. Алхам 2-ыг дахин хийж, доод мөрөнд “venv” бичиг байгаа эсэхийг шалгаарай. Хэрвээ асуудал үргэлжилбэл Ctrl+Shift+P дарж “Developer: Reload Window”-ийг сонгоод VS Code-ийн цонхыг дахин ачаална уу.
“Select debugger” цэс гарахгүй, launch.json нээгдэх. Хэрвээ F5 дарахад VS Code launch.json нэртэй файл үүсгэж нээвэл энэ нь debug тохиргооны файл юм. Тэнд “Python Debugger: Current File” гэсэн тохиргоо байвал түүнийг хадгалаад хаахад хангалттай, цаашид F5 тэр тохиргоог ашиглана. Энэ файл төслийн .vscode фолдерт үүсдэг бөгөөд 5.2 дугаар хичээлд ярьсанчлан хувийн тохиргоо тул repository-д оруулах эсэхээ та шийднэ.
ModuleNotFoundError debug горимд л гарах. Хэрвээ python debug_order.py terminal-д ажилладаг хэрнээ F5-аар ажиллуулахад модуль олдохгүй байвал debugger өөр Python эсвэл өөр фолдероос ажиллаж байна. Alхам 2-ын interpreter-ийг шалгаж, VS Code-д төслийн фолдерыг, дэд фолдерыг биш, нээсэн эсэхээ баталгаажуулаарай.
Шар мөрийг "ажилласан" гэж андуурах. Шар мөр бол дараа нь ажиллах мөр. Хэрвээ та шар мөрөнд оноогдох хувьсагчийн утгыг Locals-д хайгаад олохгүй бол энэ нь хэвийн: F10 дарсны дараа л тэр гарч ирнэ. Энэ нарийн зүйлийг санаж байвал Locals-ийн утгуудыг зөв уншина.
VS Code debugger нь программыг хүссэн мөрөнд зогсоож, бүх хувьсагчийг харуулж, мөр мөрөөр урагшлуулдаг, кодонд нэг ч мөр нэмэх шаардлагагүй. Түүнд Microsoft-ын Python ба Python Debugger өргөтгөлүүд, мөн “Python: Select Interpreter”-ээр сонгосон venv-ийн Python хэрэгтэй. Breakpoint-ийг мөрийн дугаарын зүүн талд дарж эсвэл F9-өөр тавина. F5 идэвхтэй файлыг debug хийдэг бөгөөд анх удаа “Python Debugger” ба “current file” тохиргоог сонгоно. Шар мөр бол дараа нь ажиллах мөр. VARIABLES-ийн Locals тухайн функцийн хувьсагчдыг харуулж, саяхан өөрчлөгдсөнийг онцолдог. Continue (F5) дараагийн breakpoint хүртэл, Step Over (F10) мөрийг функцийн дотор оролгүй, Step Into (F11) функцийн дотор орж, Step Out (Shift+F11) функцээс гарч, Stop (Shift+F5) зогсооно. CALL STACK нь traceback-ийн амьд хувилбар бөгөөд давхар бүрийн хувьсагчдыг нээж болно. Нөхцөлтэй breakpoint давталтын тодорхой алхамд л зогсдог, Debug Console зогссон программд илэрхийлэл ажиллуулж таамаглал шалгадаг, debugger алдаа гарах мөчид автоматаар зогсдог, Testing самбараас тестийг debug хийж болно.
Дараагийн хичээлд CALL STACK-ийн текст хэлбэр болох traceback-ийг хамгийн гүнзгий түвшинд уншина. Олон файлыг дамжсан гурав, дөрвөн давхар traceback-ийг доороос нь дээш, давхар бүрийг монголоор бүрэн уншиж, алдаа хаана гарсан ба хаана үүссэн хоёрын ялгааг ойлгоно.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.