TLDR: программа на C, сотни потоков, представление отладки Eclipse (Oxygen 3) CDT с длинным деревом.Как искать?
Я отлаживаю некоторое программное обеспечение, которое я написал (на C, FWIW), которое может генерировать несколько сотен потоков.Около 300 из них запускаются при запуске, и примерно столько же запускаются динамически для выполнения задач во время выполнения.Во время определенных операций у меня может быть запущено более 500 потоков.
В более ранних версиях программного обеспечения было возможно выполнить задачу для его отладки таким образом, чтобы при сбое работало только несколько потоков (например, произошел segfault и т. д.), поэтому было бы разумно просто просмотреть список потоков в представлении «Отладка» и понять, что происходит.Совсем недавно я запустил еще много потоков в начале, и, хотя это принесло огромную выгоду с точки зрения производительности, это означает, что в любой момент у меня будет список потоков, которые слишком длинные, чтобы просматривать их вручную.
Как мне найти поток, основанный на чем-то, что я знаю о потоке, то есть с какой функцией он был запущен (передан pthread_create ())?В частности, как я могу искать в дереве, отображаемом в окне отладки?Кроме того, я нашел способ скопировать содержимое этого представления в буфер обмена, но (необъяснимо) это копирует только то, что видно, а не фактическое содержимое дерева - как я могу автоматически развернуть все дерево, чтобы я мог его скопироватьа поискать в текстовом редакторе?Нажатие на маленькие стрелки для расширения каждого из сотен потоков в соответствующие им стеки вызовов просто нецелесообразно.
Я занимаюсь разработкой на платформе RHEL 6 (долгая история, переход на современность еще не завершен), а дляВ тот момент, когда я обнаружил препятствия при обновлении после Eclipse Oxygen 3a (4.7.3a), так что сейчас я застрял на этом.
РЕДАКТИРОВАТЬ: я должен уточнить - это правда, что я могу просто нажать Ctrl-F в окне отладки, и я получаю диалоговое окно поиска.Тем не менее, и я всерьез отбрасываю здесь свою челюсть в недоумении, он также ищет только то, что видно , а не фактическое содержимое дерева.Так что для того, чтобы это было полезно, мне все равно пришлось бы расширять каждый поток в списке вручную;по-прежнему нет команды для этого.