Я хочу знать, может ли его владелец получить доступ к стеку (выделенному для потока, который используется для хранения локальных переменных и т. Д.). Пропорционально это может помочь в моих усилиях по программному определению проблемы с переполнением стека. Предварительные заявкиДоступ к стеку, выделенному для потока
ответ
Не переносимо, нет. Однако в зависимости от используемой платформы вы можете установить размер стека для каждого потока. Например, если вы используете потоки POSIX, вы можете использовать pthread_attr_setstacksize для установки размера стека.
Нет портативного способа. Вы можете использовать встроенный ассемблер для определения текущего указателя стека в потоке, а затем найти блок с этим адресом в карте памяти процесса.
Но обычно проблемы с переполнением стека определяются операционной системой. Когда стек выделяется для потока или процесса, перед ним есть выделенный сегмент памяти, при этом чтение и запись на этот сегмент отключены. Когда вы закончите стеки, ваше приложение достигнет этого сегмента, и доступ к нему приведет к системному исключению.
спасибо за ваш ответ, он помог мне понять несколько других аспектов it.but, есть ли инструменты, доступные для обнаружения такого overflow.lets говорят, что мое приложение имеет три потока, выполняемых .so есть ли способ найти программно, какой поток вызвал переполнение стека? – pushkarpriyadarshi
Вы можете анализировать указатели стека ваших потоков - он должен быть самым близким к адресу исключения – Xeor
В Unix вы можете настроить альтернативный стек сигналов и использовать его для обнаружения переполнения стека (после бомбардировки). Когда ваш поток попадает в переполненный стек (предполагается, что вы или OS размещает там защитную страницу), вы можете посмотреть в регистре стека в sigcontext_t, чтобы убедиться, что именно поэтому.
Если вы хотите предотвратить переполнение стека программным путем, выделите свой собственный стек потоков, а затем периодически повторяйте значение указателя стека (вам придется иметь дело с нерепортативными проблемами, где расположена ваша база стека, и как образец указателя стека). Для однопоточной программы вы можете использовать базу стека в качестве выборки в основном по сравнению с стеклом процесса, чтобы увидеть, слишком ли вы заходите слишком далеко.
Все это не переносное, но возможно.
- 1. доступ к выделенному/выделенному тексту
- 2. Доступ к стеку JVM
- 3. Доступ к стеку предметов холста
- 4. Доступ к стеку расширения CSR в M2Crypto
- 5. Доступ к выделенному объекту с использованием строки
- 6. Программный доступ к стеку вызовов в .net
- 7. Android: доступ к стеку активности программно
- 8. Доступ к стеку потоков ZOmbie в java?
- 9. Доступ к выделенному текстовому полю в C#
- 10. Имеют ли потоки доступ к стеку других потоков одного процесса?
- 11. Доступ к стеку холста Canvas's DrawingContext2D для сохранения/восстановления?
- 12. Возможно ли получить доступ к стеку стека java-потока в области данных времени выполнения?
- 13. Как я могу получить доступ к стеку каждого потока с использованием типа THREAD в QNX?
- 14. PushViewController для перехода к следующему стеку
- 15. Как получить доступ к стеку вызовов сценария DOORS DXL?
- 16. Что более быстрый доступ к стеку или куче?
- 17. Доступ к стеку стека на архитектуре x86-64 в Linux
- 18. Dynatree: доступ к автоматически выделенному ключу урезанного узла
- 19. Как получить доступ к выделенному в android Java
- 20. Append ДИВ к выделенному тексту
- 21. Доступ к стеку ошибок из обработчика хранимой процедуры
- 22. Доступ к стеку Bluetooth на удаленном настольном сервере
- 23. Как получить доступ к стеку ядра процесса в ядре Linux?
- 24. Может ли приложение получить доступ к предыдущему стеку приложений?
- 25. Доступ к стеку из адресов без x4 - возможно ли это?
- 26. Доступ к стеку ошибок отказа от неподходящего обещания
- 27. доступ к 2d массиву, выделенному с помощью malloc.
- 28. Java - Как получить доступ к выделенному материалу в JTextArea
- 29. ServiceStack: не удается получить доступ к выделенному потоку на IRequiresRequestStream
- 30. Доступ к предыдущему выделенному viewController и его методам
какая платформа это для? – steve