Допустим, у меня есть класс, который инициирует два потока Thread_A и Thread_B, каждый делает некоторые вычисления и ocassionally используя подпрограмму моего класса. (не беспокойтесь о совместном использовании данных, скажем, это строка журнала или представьте, что подпрограмма является методом в библиотеке Java). Я хочу знать, есть ли способ настроить точку останова внутри этой подпрограммы на вызванную подпрограмму подпрограмму скажем thread_A, но не B, или сказать, что определенная точка останова была удалена до этой точки останова.Breakpoint «параллелизм» в Intellij
Очевидно, что я всегда могу перейти на вкладку кадров в окне отладки и увидеть поток вызывающего, но это утомительно. Может быть, thread_A обращается к подпрограмме гораздо реже, чем thread_B. Я не хочу видеть все точки останова, которые инициируются Thread_B.
Как я это делаю сейчас, настраивает глобальные переменные флага и манипулирует ими непосредственно перед вызовом подпрограммы. Затем у меня условие моей точки останова зависит от переменной флага. Однако это, вероятно, не очень потокобезопасно и не очень чисто.
Каков правильный способ сделать это? Из любопытства, есть ли какая-либо другая среда IDE для любого другого языка, который это делает?
Я вижу, что это сработает. Проблема в том, что да, код мой, поскольку у меня есть к нему доступ, но это была упрощенная версия кода. На самом деле это я пытаюсь понять чужой код, и если бы я знал, что такое нить, проблема была не проблема! :) –
у ваших потоков уже есть имена, которые могут использоваться как «ID» ... если потоки запускаются без предоставления им явного имени, будет создано уникальное имя. В настоящее время у меня нет доступа к запущенному IntelliJ ... но вкладка frames shoud показывает что-то вроде «Thread [TheThreadsName, 0,]» для каждого работающего потока ... так что если ваши потоки имеют уникальные имена, вы должны быть чтобы увидеть, какие имена у них есть, посмотрев на вкладку frames и построив условие точки останова, используя это значение –
ha yeah. –