Share to: share facebook share twitter share wa share telegram print page

Отладка программы

Разработка программного обеспечения
Ключевые процессы
Парадигмы и модели
Методологии
Инструменты

Отла́дка — этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Чтобы понять, где возникла ошибка, приходится:

  • узнавать текущие значения переменных;
  • выяснять, по какому пути выполнялась программа.
Запись в журнале компьютера из Марк II, с мотыльком, приклеенным к странице

Существуют две взаимодополняющие технологии отладки:

  • Использование отладчиков — программ, которые включают в себя пользовательский интерфейс для пошагового выполнения программы: оператор за оператором, функция за функцией, с остановками на некоторых строках исходного кода или при достижении определённого условия.
  • Вывод текущего состояния программы с помощью расположенных в критических точках программы операторов вывода — на экран, принтер, громкоговоритель или в файл. Вывод отладочных сведений в файл называется журналированием.

Место отладки в цикле разработки программы

Типичный цикл разработки, за время жизни программы многократно повторяющийся, выглядит примерно так:

  1. Программирование — внесение в программу новой функциональности, исправление существующих ошибок.
  2. Тестирование (ручное или автоматизированное; программистом, тестировщиком или пользователем; «дымовое», в режиме чёрного ящика или модульное) — обнаружение факта ошибки.
  3. Воспроизведение ошибки — выяснение условий, при которых ошибка случилась. Это может оказаться непростой задачей при программировании параллельных процессов и при некоторых необычных ошибках, известных как гейзенбаги.
  4. Отладка — обнаружение причины ошибки.

Инструменты

Отладка часто требует высокой квалификации и значительных ресурсов. Способности программиста к отладке — важный фактор в обнаружении источника проблемы, но сложность отладки сильно зависит от используемого языка программирования и инструментов, в частности, отладчиков.

Инструменты отладки

Отладчик — это программный инструмент, позволяющий программисту наблюдать за выполнением исследуемой программы, останавливать и перезапускать её, прогонять в замедленном темпе, изменять значения в памяти и даже, в некоторых случаях, возвращать назад по времени.

Также полезными инструментами в руках программиста могут оказаться:

  • Профилировщики. Они позволят определить, сколько времени выполняется тот или иной участок кода. Анализ покрытия позволяет выявить неисполняемые участки кода
  • API логгеры позволяют отследить взаимодействие программы и Windows API при помощи записи сообщений Windows в лог
  • Дизассемблеры позволяют посмотреть ассемблерный код исполняемого файла
  • Снифферы помогут отследить сетевой трафик, генерируемый программой
  • Снифферы аппаратных интерфейсов позволяют увидеть данные, которыми обмениваются система и устройство
  • Логи системы.

Использование языков программирования высокого уровня обычно упрощает отладку, если такие языки содержат, например, средства обработки исключений, сильно облегчающие поиск источника проблемы. В низкоуровневых языках ошибки могут приводить к незаметным проблемам — например, повреждениям памяти и утечкам памяти. Тогда бывает довольно трудно определить, что стало первоначальной причиной ошибки. В этих случаях могут потребоваться сложные приёмы и средства отладки.

«Наш личный выбор — стараться не использовать отладчики, кроме как для просмотра стека вызовов или же значений пары переменных. Одна из причин этого заключается в том, что очень легко потеряться в деталях сложных структур данных и путей исполнения программы. Мы считаем пошаговый проход по программе менее продуктивным, чем усиленные размышления и код, проверяющий сам себя в критических точках.

Щёлканье по операторам занимает больше времени, чем просмотр сообщений операторов выдачи отладочной информации, расставленных в критических точках. Быстрее решить, куда поместить оператор отладочной выдачи, чем проходить шаг за шагом критические участки кода, даже предполагая, что мы знаем, где находятся такие участки. Более важно то, что отладочные операторы сохраняются в программе, а сессии отладчика переходящи.

Слепое блуждание в отладчике, скорее всего, непродуктивно. Полезнее использовать отладчик, чтобы выяснить состояние программы, в котором она совершает ошибку, затем подумать о том, как такое состояние могло возникнуть. Отладчики могут быть сложными и запутанными программами, особенно для новичков, у которых они вызовут скорее недоумение, чем принесут какую либо пользу…»

«Отладка сложна и может занимать непредсказуемо долгое время, поэтому цель в том, чтобы миновать большую её часть. Технические приёмы, которые помогут уменьшить время отладки, включают хороший дизайн, хороший стиль, проверку граничных условий, проверку правильности исходных утверждений и разумности кода, защитное программирование, хорошо разработанные интерфейсы, ограниченное использование глобальных переменных, автоматические средства контроля и проверки. Грамм профилактики стоит тонны лечения.»

Инструменты, снижающие потребность в отладке

Другое направление — сделать, чтобы отладка нужна была как можно реже. Для этого применяются:

  • Контрактное программирование — чтобы программист подтверждал другим путём, что ему на выходе нужно именно такое поведение программы. В языках, в которых контрактного программирования нет, используется самопроверка программы в ключевых точках.
  • Модульное тестирование — проверка поведения программы по частям.
  • Статический анализ кода — проверка кода на стандартные ошибки «по недосмотру».
  • Высокая культура программирования, в частности, паттерны проектирования, соглашения об именовании и прозрачное поведение отдельных блоков кода — чтобы объявить себе и другим, каким образом должна вести себя та или иная функция.
  • Широкое использование проверенных внешних библиотек.

Безопасность программного кода и отладка

В программном коде может быть так называемое недокументированное поведение — серьёзные ошибки, которые не проявляются при нормальном ходе выполнения программы, однако весьма опасны для безопасности всей системы в случае целенаправленной атаки. Чаще всего это результат ошибок программиста. Наиболее известные примеры — это SQL-инъекция и переполнение буфера. В данном случае задача отладки это:

  • Выявление недокументированного поведения системы
  • Устранение небезопасного кода

Выделяют такие методы:

  • статический анализ кода. На этой фазе программа сканер ищет последовательности в исходном тексте, соответствующие небезопасным вызовам функций и т. д. Фактически идет сканирование исходного текста программы на основе специальной базы правил, которая содержит описание небезопасных образцов кода.
  • фаззинг. Это процесс подачи на вход программы случайных или некорректных данных и анализ реакции программы.
  • Reverse engineering (Обратная инженерия). Этот случай возникает, когда независимые исследователи ищут уязвимости и недокументированные возможности программы.

См. также

Примечания

Литература

  • Стив Магьюир, «Создание надёжного кода» (Steve Maguire. Writing Solid Code. Microsoft Press, 1993)
  • Стив Мак-Коннел, «Совершенный код» (Steve McConnel. Code Complete. Microsoft Press, 1993)

Ссылки

Read other articles:

Summer PocketsInformasi produksiPengembangKeyPenerbitVisualArt'sPengarahKaiSenimanNa-GaTsubasu IzumiYūnon NagayamaEngiyoshiPenulisKaiHasamaYū NiijimaKomponisShinji OritoJun MaedaDonmaruTomohiro TakeshitaRyō Mizutsuki Data permainanPlatformWindowsGenreNovel visualModePemain tunggal PerilisanTanggal rilisPortal permainan videoL • B • PWBantuan penggunaan templat ini Summer Pockets adalah sebuah permainan video novel visual Jepang yang dikembangkan oleh Key, sebuah merek dari Visua…

Koordinat: 6°50′46″S 108°48′07″E / 6.846243°S 108.801849°E / -6.846243; 108.801849 Stasiun Losari KG09 Stasiun LosariLokasi Jalan Raya Cirebon–TegalPanggangsari, Losari, Cirebon, Jawa Barat 45192IndonesiaKetinggian+3 mOperatorKereta Api IndonesiaDaerah Operasi III CirebonLetak dari pangkal km 188+793 lintas Semarang Poncol–Tegal–Cirebon (bangunan lama) km 189+201 (bangunan baru)[1] Jumlah peronSatu peron sisi dan dua peron pulau yang sama-sama ti…

Aline Marie Raynal Aline Marie Raynal en 2010.Información personalNombre de nacimiento Aline Marie Roques Nombre en francés Aline Marie Roques Raynal Nacimiento 4 de febrero de 1937 X Distrito de París (Francia) Fallecimiento 16 de julio de 2022 (85 años)Périgueux (Francia) Nacionalidad FrancesaLengua materna Francés FamiliaCónyuge Jean Raynal EducaciónEducada en Universidad de DakarUniversidad de Montpellier 2 (Doc. en Biología marina; hasta 1981) Información profesionalOcupació…

Sigit SudarmantoWakil Kepala Lembaga Pendidikan dan Pelatihan PolriMasa jabatan5 Januari 2018 – 13 Agustus 2018PendahuluIrjen. Pol. Anton CharliyanPenggantiIrjen. Pol. Boy Rafli Amar Informasi pribadiLahir7 September 1960 (umur 63)Kendal, Jawa TengahAlma materAkademi Kepolisian (1985)Penghargaan sipilAdhi Makayasa (1985)Karier militerPihak IndonesiaDinas/cabang Kepolisian Negara Republik IndonesiaMasa dinas1985 - 2018Pangkat Inspektur Jenderal PolisiSatuanReserseSunting…

Años 700 a. C.Decenios Años 730 a. C. • Años 720 a. C. • Años 710 a. C. ← Años 700 a. C. → Años 690 a. C. • Años 680 a. C. • Años 670 a. C.Años 709 a. C. • 708 a. C. • 707 a. C. • 706 a. C. • 705 a. C. • 704 a. C. • 703 a. C. • 702 a. C. • 701 a. C. • 700 a. C.Siglos Siglo IX a. C. ←…

This article is about the 1930s political party. For the modern-day party, see Constitutional Democratic Party of Japan. Political party in Japan Rikken Minseitō 立憲民政党LeaderOsachi HamaguchiWakatsuki ReijirōMachida ChūjiFoundedJune 1, 1927 (1927-06-01)[1]DissolvedAugust 15, 1940 (1940-08-15)[2]Preceded byKenseikai[3]Seiyūhontō[3]Merged intoImperial Rule Assistance Association[4]HeadquartersSakurada-…

Syafri Segeh gelar Sutan Rajo Pangeran (10 April 1935 – 1 Juni 2016)[1][2] adalah seorang wartawan dan penulis buku. Ia penah menjadi wartawan Harian Aman Makmur dan Pemimpin Redaksi Harian Haluan. Ia juga menulis buku yang berjudul Subandrio Durno Terbesar Abad XX (1966).[3] Syafri Segeh memulai karier persnya sebagai pegawai Kantor Jawatan Penerangan (Japen) Kota Padang sejak tahun 1950 dan bertugas sebagai redaktur. Kemudian ia merangkap sebagai reporte…

Герсеклі Ахмед-паша тур. Hersekli Ahmed Paşa серб. Ахмед-паша Херцеговић Капудан паша Османської імперії весна 1500 — осінь 1501 1497 — 1498 Попередник: Коджа Давуд-паша Наступник: Чандарлі Ібрагім-паша 1503 — 1506 Попередник: Хадим Алі-паша Наступник: Хадим Алі-паша 10 березня 1…

  此条目的主題是美国境外领地。关于萨摩亚独立国 (西萨摩亚),請見「萨摩亚」。 美屬薩摩亞American SamoaAmerika Sāmoa未通過組織法的未合併屬地 旗帜徽章口号:Sāmoa, Muamua Le AtuaSamoa, Let God Be First萨摩亚,让神成为优先颂歌:《美属萨摩亚》Amerika Samoa美屬薩摩亞的位置主權國家 美國分割薩摩亞(英语:Tripartite_Convention)1899年12月2日批准法案(英语:Ratification_Act_of_1…

Supporters group for the New York Red Bulls This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Raging Bull Nation – news · newspapers · books · scholar · JSTOR (October 2008) (Learn how and when to remove this template message) RagingBullNation, formerly known as MetroNation, is a supporters group for the New York…

Mound in Turkey Aşağımollahasan höyükShown within TurkeyLocationVan Province, TurkeyRegionAnatoliaCoordinates38°39′11″N 43°53′54″E / 38.65306°N 43.89833°E / 38.65306; 43.89833TypeSettlementSite notesConditionIn ruins Early expansion of the Kuro-Araxes culture (light shading) shown in relation to subsequent cultures in the area, such as Urartu (dark shading). Aşağımollahasan höyük is a höyük (mound) in Özalp, Turkey, and is the first known settleme…

Northern Irish novelist and journalist For other people named Robert Wilson, see Robert Wilson (disambiguation). Robert McLiam WilsonBelfast-born author, Robert McLiam WilsonBornRobert Wilson (1964-02-24) 24 February 1964 (age 59)Belfast, Northern IrelandOccupationNovelist, journalistLanguageEnglishEducationSt Malachy's College; St Catharine's College, CambridgeGenreCrime, ThrillerNotable worksRipley Bogle, Eureka StreetNotable awardsBetty Trask Award; Rooney Prize Robert McLiam Wilson (bor…

American TV series or program DoubtGenreLegal dramaCreated by Tony Phelan Joan Rater Starring Katherine Heigl Dulé Hill Laverne Cox Dreama Walker Kobi Libii Steven Pasquale Elliott Gould ComposerSean CalleryCountry of originUnited StatesOriginal languageEnglishNo. of seasons1No. of episodes13ProductionExecutive producers Tony Phelan Joan Rater Carl Beverly Sarah Timberman Adam Bernstein ProducerJohn CockrellProduction locationNew York City, New YorkRunning time43 minutesProduction companie…

National body for Karate in Spain Spanish Karate FederationSportKarateJurisdictionNationalAbbreviation(RFEK)AffiliationWorld Karate Federation (WKF)Regional affiliationEuropean Karate FederationOfficial websitewww.rfek.es The Spanish Karate Federation (Spanish: Real Federación Española de Karate (RFEK), is the national body for Karate in Spain. It's the only association authorised to send Spanish Karatekas to the Summer Olympics. [1][2][3][4] References ^ Histor…

坐标:25°02′05″N 121°51′53″E / 25.034776°N 121.864743°E / 25.034776; 121.864743 三忠廟基本信息位置 臺灣新北市雙溪區雙溪里長安街15號主神三忠公建立时间 大清同治七年(1868年)地圖 三忠廟,又稱三公廟,位於臺灣新北市雙溪區雙溪里,為臺灣唯一主祀文天祥、陸秀夫、張世傑的廟宇。 沿革 福建省漳州府長泰縣江都村的連姓家族以文天祥、陸秀夫、張世傑…

Artykuł 52°16′1″N 14°51′43″E - błąd 38 m WD 52°15'N, 14°50'E, 52°15'N, 14°50'E - błąd 20226 m Odległość 343 m Radzików wieś Dwór z XVIII w. w Radzikowie Państwo  Polska Województwo  lubuskie Powiat słubicki Gmina Cybinka Liczba ludności (2021) 219[1] Strefa numeracyjna 68 Kod pocztowy 69-108[2] Tablice rejestracyjne FSL SIMC 0908745 Położenie na mapie gminy CybinkaRadzików Położenie na mapie PolskiRadzików Położenie na mapie woj…

هذه المقالة بحاجة لصندوق معلومات. فضلًا ساعد في تحسين هذه المقالة بإضافة صندوق معلومات مخصص إليها. تم تصميم هذا التمثيل الأنيق لشبكة النقل بين الكواكب لإظهار المسار (غالبا ما يكون ملتوياً) والذي تعبره عبر النظام الشمسي. يمثل الشريط الأخضر مسارا من بين العديد من المسارات المم…

Untuk kegunaan lain, lihat Tiamat. Tiamat Tiamat adalah kelompok musik dari Swedia yang didirikan di Stockholm pada 1988. Musik band ini sering disebut sebagai gothic metal, gothic-doom metal dan symphonic metal karena mereka telah berubah gaya dalam sejarah mereka. Biografi Mulanya mereka memainkan musik death metal di bawah nama Treblinka. Band ini kemudian bubar pada 1989, dan vocalist/guitarist Johan Edlund berganti nama menjadi Tiamat. Anggota Johan Edlund - Vocals, guitar, keyboards, there…

2E06 Raya Bekasi Pulogebang Halte TransjakartaLetakKotaJakarta TimurDesa/kelurahanUjung Menteng, CakungKodepos13960AlamatJalan Bekasi RayaKoordinat6°11′15″S 106°57′36″E / 6.1874344°S 106.9599844°E / -6.1874344; 106.9599844Koordinat: 6°11′15″S 106°57′36″E / 6.1874344°S 106.9599844°E / -6.1874344; 106.9599844Desain HalteStruktur BRT, median jalan bebas 1 tengah Pintu masukJembatan penyeberangan di sudut Jalan Bekasi RayaG…

United States historic placeM-26–Silver River CulvertU.S. National Register of Historic Places Show map of MichiganShow map of the United StatesLocation M-26 over Silver River, Eagle Harbor Township, MichiganCoordinates47°27′47″N 88°4′20″W / 47.46306°N 88.07222°W / 47.46306; -88.07222Built1930ArchitectKeweenaw County Road CommissionArchitectural stylemultiplate steel culvertMPSHighway Bridges of Michigan MPSNRHP reference No.99001527[1]…

Kembali kehalaman sebelumnya