Visual Studio имеет возможность проверки приостановленных потоков и их стека вызовов. Можно ли проверить стек вызовов приостановленного волокна, учитывая дескриптор волокна?
Цель состоит в том, чтобы получить больше отладочной информации о взвешенных волокнах (и удовлетворить мое любопытство).
Из моих начальных поисков я не ожидаю, что это будет легко (или даже выполнимо). Предложения приветствуются.
Всего 1 ответ
Нет, это невозможно. отладчик не может получить стек для неактивных волокон просто потому, что только само приложение знает, где находятся данные и стек неактивных волокон.
попробуй объяснить.
учитывая ручку волокна?
не существует ручки для волокна. существует дескриптор только для потока. и стек для активного волокна - это то же самое, что и стек потоков. дополнительные волокна (и их стек) выделяются из кучи процесса. Не хранить - где расположены дополнительные данные / стек волокна. Само приложение должно хранить эту информацию. внешние программы, включая отладчики, не могут этого знать. как результат - невозможно показать трассировку стека, если мы даже не знаем, где он находится. отладчик даже не может знать - сколько существует волокон. возможно только просмотр - активны ли волокна (как минимум) в потоке (после вызова ConvertThreadToFiber
и до ConvertFiberToThread
). создаются дополнительные волокна, где хранятся данные / стек - уже неизвестно.