Я сам создаю свой собственный файл. Я получаю какой-то странный результат от программы, и поэтому просто вставляю в нее какую-то легкую переменную (тест). Я хотел бы спросить, почему тест не = 100 ?????? При каких обстоятельствах это произойдет?Как правильно установить переменную в .bss и сделать ее init. value = 0
это результат показать в БГД
74 __CRC_CLK_ENABLE();
(gdb) step
182 test = 100;
(gdb) p test
$1 = 236 '\354'
Я бегу на Linux, и это мой первый раз использовать командную строку и сделать свой Makefile. У меня есть работа над проектами stm32. Моя проблема: 1) У меня есть переменная, а init - ноль, она попадает в секцию .bss, но как только я отлаживаю ее и обнаруживаю, что это не нулевой случай И когда я инициализирую ее ненулевым, она попадает в .data и один раз на этом выйдет ненулевое значение 2) Как только я запускаю программу с помощью gdb, она не попадает в main(), почему? enter image description here
и это мой линкер файл:
_sidata = .;
.data : /* LMA address is _sidata (in FLASH) */
{
. = ALIGN(4);
_sdata = .; /* data section VMA address */
*(.data*)
. = ALIGN(4);
_edata = .;
} >ram
/* Uninitialized data section (zeroed out by startup code) */
.bss :
{
. = ALIGN(4);
_sbss = .;
*(.bss*)
*(COMMON)
. = ALIGN(4);
_ebss = .;
} >ram AT >flash