Описание тега stack-unwinding

Stack-unwind вытолкнет верхний фрейм стека, в зависимости от языка, на котором это может произойти, например, в конце блока кода, при возврате из вызываемой функции или во время обработки исключений.
2 ответа

Разве я не должен использовать _endthreadex() в процедуре потока для разматывания стека?

Я изучал процедуру размотки стека в потоке в среде win32.Мой тестовый код следующий. class Dummy { public: Dummy() { wcout << L"dummy ctor" << endl; } ~Dummy() { wcout << L"dummy dtor" << endl; } }; void InnerFunc() { Dummy d…
01 фев '12 в 03:00
3 ответа

iOS раскручивается для просмотра не загружен

Я перед небольшой проблемой: У меня что-то подобное при запуске приложения: (1) Заставка -> Я вошел в систему? -> (3) HomeView | еще (2) вид входа Поэтому, когда я вхожу в систему, я перехожу на домашнюю страницу. И когда я выхожу из системы, я могу…
2 ответа

Как я могу заменить точное представление, которое выскочило после использования unwindSegue?

У меня есть главное меню, которое ведет к представлению, где вы играете в игру. В окне, где вы играете, вы можете нажать кнопку, чтобы вернуться в главное меню, для этого я использую unwindSegue. Есть ли способ теперь нажать на ту же кнопку "играть …
28 фев '14 в 20:02
5 ответов

Для чего используются директивы CFI в Gnu Assembler (GAS)?

Кажется, что после каждой строки есть директива.CFI, а также есть множество вариантов, например,.cfi_startproc, .cfi_endproc и т.д.. больше здесь. .file "temp.c" .text .globl main .type main, @function main: .LFB0: .cfi_startproc pushq %rbp .cfi_def…
0 ответов

Есть ли функция ядра Windows, чтобы разматывать стек?

Мне было интересно, есть ли функция, доступная из драйвера ядра Windows, которая может разматывать стек для получения (вложенных) адресов функций, которые вызвали текущую функцию? Эта штука:
01 июл '18 в 10:34
0 ответов

Как работает обратная трассировка внутренне?

Этот вопрос только для понимания цели. Что внутренне делает _Unwind_Backtrace для отслеживания стека вызовов функций. Выполняется ли часть кода библиотеки для перемотки внутри системы каждый раз, когда мы вызываем функцию для отслеживания стека? Или…
19 окт '18 в 12:48
2 ответа

C++ необработанное исключение в рабочем потоке

Необработанное исключение ведет себя по-разному для основного потока и другого std::thread. вот тестовая программа #include <thread> class XXX{ public: XXX(){std::fprintf(stderr, "XXX ctor\n");} ~XXX(){std::fprintf(stderr, "XXX dtor\n");} }; v…
1 ответ

unw_init_remote не удалось с UNW_EBADREG

На андроиде, собирая следы определенного нативного процесса, я заметил, что обратный след определенного потока процесса не был собран (libunwind используется для сбора обратного следа). //Первая попытка 12-29 20:47:20.902 13088 13088 W libbacktrace:…
14 янв '18 в 09:29
0 ответов

Разорвать информационную цепочку стека / кадра вызова в ELF/Linux?

Я пытаюсь сделать довольно нишевую вещь, которая по сути ломает CFI (Информация о кадре вызова в DWARF EH info) и rbp & rsp ссылки между кадрами. Основная причина этого заключается в том, что после определенной точки в потоке управления потоком я хо…
20 май '18 в 08:11
1 ответ

Манипулирование информацией о размотке x64 для соответствия крюку сборки

Изменить: Я, кажется, ошибся, обратная трассировка прекрасно работает из любой точки Linux - только при удаленной отладке из GDB на Ubuntu для удаленных окон, трассировка стека полностью уничтожается после ввода одной из функций выделения памяти в m…
09 ноя '18 в 19:18
4 ответа

Почему деструкторы не вызываются, когда исключение не обнаруживается в main?

У меня есть следующий код: #include <iostream> #include <vector> #include <tr1/memory> struct FooError {}; struct Foo { ~Foo() { std::cerr << "~Foo() executed" << std::endl; } explicit Foo(unsigned int index) { if (5 ==…
18 дек '11 в 17:17
0 ответов

Какие архитектуры требуют информацию для разворачивания кадра?

В каких архитектурах требуется информация о разворачивании фреймов как часть ABI, даже для кода C (в отличие от C++)? То есть, какие архитектуры по умолчанию не требуют указателей кадров для обратных трасс?
10 июн '18 в 21:41
3 ответа

Это использование c_str с неопределенным поведением исключения?

Я видел несколько похожих фрагментов кода, которые выглядели так: struct MyExcept : std::exception { explicit MyExcept(const char* m) noexcept : message{m} {} const char* what() const noexcept override { return message; } const char* message; }; voi…
5 ответов

Срок действия указателя после разматывания стека

В C++ указатель остается действительным после разматывания стека или нет?
25 апр '11 в 09:06
3 ответа

Использовать функцию раскрутки в didSelectRowAtIndexPath?

У меня есть контроллер корневого представления A, который проталкивает переходы к контроллеру табличного представления B. И когда в B. выбрана строка, я хочу использовать переход с размоткой, чтобы вернуться к A и передать текст в строке обратно в к…
3 ответа

RAII и стек раскручивается

До сих пор мои представления о "переплетении" (из-за отсутствия лучшего слова) RAII и раскручивания стека были / были (если не полностью) неправильными. Насколько я понимаю, использование RAII защищает от любых / всех утечек ресурсов, даже тех, кото…
3 ответа

Как обнаружить разматывание стека в деструкторе

У меня есть простой объект C++, который я создаю в начале функции F(), чтобы гарантировать, что две совпадающие функции (OpDo, OpUndo) вызываются в начале и возвращении F(), используя конструктор объекта и деструктор. Однако я не хочу, чтобы операци…
25 окт '10 в 20:24
1 ответ

Размотка стека x64 и проверка, находится ли RIP в эпилоге

Я хочу развернуть стек вызовов x64, поэтому я пытаюсь следовать "процедуре UNWIND", которую я нашел здесь: http://msdn.microsoft.com/en-us/library/8ydc79k6.aspx Я понимаю, что если RIP находится в эпилоге, нам нужно вычислить смещение RSP, учитывая,…
16 апр '13 в 16:45
4 ответа

Как я могу определить, активно ли исключение во время деструктора?

В C++, как я могу обнаружить в теле моего деструктора, разворачивается ли стек из-за исключения? Могу ли я получить ссылку на активное исключение после обнаружения? Я спрашиваю, потому что я хотел бы добавить некоторый код отладки, который объясняет…
01 ноя '11 в 13:17
0 ответов

Некоторые вызовы вызывают разматывание стека, хотя исключение C++ не выдается

Я использую Visual Studio Native Unit Test Framework для C++. Когда утверждение не выполняется, следующие операторы не выполняются и вызываются деструкторы локальных объектов, поэтому создается впечатление, что выдается исключение, но я не могу пере…
16 май '18 в 20:23