12 Eylül 2022 Pazartesi

IntelliJ Idea Breakpoint İpuçları

Giriş
IntelliJ ile debug için Shai Almog tarafından gösterilen bazı açıklamalar burada. Bazıları farklı şeyler söylese de bence temelde 3 çeşit breakpoint var
1. Line Breakpoint
2. Field Watchpoint veya Debug Field
3. Exception Breakpoint

1. Line Breakpoint
Seçenekler şöyle
Suspend
Şeklen şöyle. Eğer bu seçenek seçili değilse, Breakpoint'e gelince thread durmaz.

Conditional Breakpoints
Condition koymak istersek şöylen şöyle

Object Marking ile işaretli bir nesneye erişileceği gibi, genel koşullar da yazılabilir. Şeklen şöyle.

Suspending single thread only
Açıklaması şöyle
By default, in the pop up you’ll see the All radio button selected. However, if you choose the Thread one, you can suspend only the thread executing the line of code where the breakpoint is.

This is usually useful when you have threads, which, if suspended, might throw exceptions and die, like threads consuming from Kafka or querying a database with a timeout. Having only one thread stop might help you keep the app running and healthy while you examine the bit of code that might be problematic.
Şeklen şöyle. Sadece bu breakpoint'e gelen thread durdurulur. Diğer thread'ler çalışmaya devam eder.


Print debug statements
Açıklaması şöyle
In the default pop up, by default the Suspend checkbox is selected. If you deselect it, the window will expand revealing a whole lot more options. One of those is Evaluate and log which means that every time the debugger would normally suspend (no matter if it’s a normal breakpoint, with a condition, suspending one or all threads) it will print whatever the statement in that textbox evaluates to instead. It can either be a string literal or anything using the variables in the scope.
Çoklu thread kullanan uygulamalarda, "Suspend" kaldırılır ve "Evaluate and log" ile thread'in log basması sağlanabilir. Şeklen şöyle.


Şeklen şöyle

Eğer breakpoint tam metod ismine konulmuşsa, More yazısına tıklarsak Method entry veya Method exit seçimi yapabiliriz. Şeklen şöyle. Burada Suspend kaldırılmış ve Method exit seçili
Eğer istersek Condition yazılabilir.  Şeklen şöyle



2. Field Watchpoint veya Debug Field
Açıklaması şöyle
This isn’t a breakpoint since the execution never stops at the field. It stops in the line of code that accesses the field. You can optionally toggle this so it will stop only for write, only for read or in both cases.
Örnek
Şeklen şöyle. Burada üye alanı değiştiren yerde kod duracak


3. Exception Breakpoint
Açıklaması şöyle
The default IDE behavior of stopping on every exception is redundant and infuriating!
Açıklaması şöyle
Sometimes, though, you cannot pinpoint the exact line causing the problem. For example in multithreaded applications exceptions are being swallowed and appear as side effects somewhere else or you are not sure where the exception is thrown from due to lack of proper logging or you just need to approach the problem more generally. In those cases, you can add a breakpoint exception.

If you hit Ctrl + Shift + F8 | Cmd + Shift +F8 you’ll see this window listing all currently added breakpoints.
Örnek
Şeklen şöyle. Burada "Class filters" ile fırlatıldığı yer seçilebilir. Ayrıca "Catch Class Filters" ve "Instance Filters" önemli

Örnek
Şeklen şöyle. Burada IllegalArgumentException nereden fırlatılırsa kod orada duracak


Diğer Breakpoint Özellikleri
1. Grouping/Naming
Breakpoint'lere "Edit Description" ile açıklama verilebilir. Ayrıca breakpoint'ler gruplanabilir.

2. Tracepoints
Açıklaması şöyle
We can use a breakpoint as an ad hoc log that doesn’t suspend execution. You can just add printouts which can include expressions, etc. 

Hiç yorum yok:

Yorum Gönder