Набор полезных советов по устранению крешей в ваших приложениях. Что радует - это только первая часть материала.
http://blog.supertop.co/post/152615019837/how-not-to-crash-1
#debug
http://blog.supertop.co/post/152615019837/how-not-to-crash-1
#debug
Supertop Blog
How Not to Crash #1
Sometimes apps crash. Crashes can interrupt the user's workflow, cause data to be lost, and interfere with the background operation of an app. For developers, some of the hardest crashes to fix are...
Дебаггинг - не искусство, а наука, и требуемые для него навыки можно спокойно развить. Почитайте исследование про научный подход к отладке программ и психологические модели, которые делают этот процесс успешным.
http://queue.acm.org/detail.cfm?id=3068754
#debug
http://queue.acm.org/detail.cfm?id=3068754
#debug
queue.acm.org
The Debugging Mindset - ACM Queue
Software developers spend 35-50 percent of their time validating and debugging software. The cost of debugging, testing, and verification is estimated to account for 50-75 percent of the total budget of software development projects, amounting to more than…
Куча лайфхаков по работе с lldb, много слабо известных. Ну и все сведено в удобную табличку, которую можно повесить у компьютера.
https://medium.com/flawless-app-stories/debugging-swift-code-with-lldb-b30c5cf2fd49
#debug #xcode
https://medium.com/flawless-app-stories/debugging-swift-code-with-lldb-b30c5cf2fd49
#debug #xcode
Medium
Debugging Swift code with LLDB
It’s extremely important to make the debugging process as simple as possible. Let’s break down some of the LLDB tricks which I personally use…
Ребята из PVS-Studio выявили крутую закономерность. Если вы копипастите код, то с большой долей вероятности ошибка будет именно в последней строчке. Подкреплено данными и вот это все.
https://viva64.com/en/b/0260/
#debug #patterns
https://viva64.com/en/b/0260/
#debug #patterns
PVS-Studio
The Last Line Effect
I have studied many errors caused by the use of the Copy-Paste method, and can assure you that programmers most often tend to make mistakes in the last fragment of a homogeneous code block.…
Отличная история из двух частей про поиск причин абсолютно непонятного креша в приложении, понимание того, что это ошибка в компиляторе, и исправление ее.
https://topologyeyewear.github.io/engineering-blog/2018/03/07/heap_corruption/
https://topologyeyewear.github.io/engineering-blog/2018/03/19/heap_corruption_followup/
#debug #memory
https://topologyeyewear.github.io/engineering-blog/2018/03/07/heap_corruption/
https://topologyeyewear.github.io/engineering-blog/2018/03/19/heap_corruption_followup/
#debug #memory
Topology Engineering
Solving a Mysterious Heap Corruption Crash
A while back, we noticed an increase in crashes in our app. The crashes were marked as heap corruption, which makes them hard to debug — the location given in the stack trace (if any) can be far away
Вышел Charles Proxy для iOS, в котором можно просматривать все сетевые соединения прямо на девайсе, шарить данные с десктопным клиентом и всякое такое.
https://www.charlesproxy.com/documentation/ios/
#networking #debug
https://www.charlesproxy.com/documentation/ios/
#networking #debug
Charlesproxy
Charles for iOS • Charles Web Debugging Proxy
Charles Web Debugging Proxy - Official Site
Зарешиваем проблемы констрейнтов без рестарта приложения.
https://mar.codes/2019-05-28/Solving-ambiguous-constraints-without-rerunning-your-app
#ui #debug
https://mar.codes/2019-05-28/Solving-ambiguous-constraints-without-rerunning-your-app
#ui #debug
Marcos Griselli
Solving ambiguous constraints without rerunning your app
This is the technique I use to solve ambiguous constraints without having to rebuild the app.
Советы по простому дебагу Combine кода. Раз уж полезли в реактивщину, то учитесь.
https://www.vadimbulavin.com/debugging-with-combine-swift-framework/
#combine #debug
https://www.vadimbulavin.com/debugging-with-combine-swift-framework/
#combine #debug
Yet Another Swift Blog
Debugging with Swift Combine Framework
Learn different ways of debugging functional reactive code written with the Swift Combine framework: read the console with the print() and handleEvents() operators; generate Xcode breakpoints with breakpointOnError() and breakpoint(); draw marble diagrams.