Я разрабатываю приложение, которое в какой-то момент должно использовать другой стек, которым будет управлять разработанная мной библиотека. Итак, я вызываю функцию инициализации этой библиотеки, и указатель стека ($sp) устанавливается на нужный мне адрес памяти.
При запуске этого кода через GDB, после того как инициализация моего другого стека завершена и выполнение возвращается к вызывающей функции, GDB выдает мне это предупреждение:
warning: GDB can't find the start of the function at 0x12.
GDB is unable to find the start of the function at 0x12
and thus can't determine the size of that function's stack frame.
This means that GDB may be unable to access that stack frame, or
the frames below it.
This problem is most likely caused by an invalid program counter or
stack pointer.
However, if you think GDB should simply search farther back
from 0x12 for code which looks like the beginning of a
function, you can increase the range of the search using the `set
heuristic-fence-post' command.
Кроме того, при печати $sp отображается старое значение.
Поскольку эта часть кода без GDB работает корректно, а по адресу 0x12 нет функции, это происходит потому, что GDB использует указатель стека для адресации, чтобы отслеживать кадр функции.
Есть ли способ избежать такого поведения и иметь возможность отлаживать это приложение?