Не удается включить WiFi при установке CentOS Stream

Как вы правильно догадались, символы берутся из информации о символах, встроенной в файлы ELF. Некоторая информация о символах необходима для возможности динамического связывания, даже если полная таблица символов отсутствует.

Что касается фактической трассировки стека, то при вызове функции место, куда должен вернуться процессор, сохраняется. Для процессоров, таких как x86, он помещается в стек. Для машин RISC он обычно помещается в регистр.Если функция хочет вызвать какие-либо другие функции (, то есть это не leafфункция ), тогда этот регистр помещается в стек. Код stacktrace находит эти адреса в стеке, ищет ближайший адрес в символах, стоящих перед ним, и сообщает об этом. Некоторый код трассировки стека печатает как имя символа, так и его расстояние, что может дать вам больше уверенности в его точности. Например, если символ находится всего в 40 байтах перед адресом возврата, то гораздо больше уверенности в том, что он находится в этом коде, по сравнению с 40 000 байтами раньше. В последнем случае можно предположить, что адрес возврата указывает на другую функцию, но эта функция не имеет записи в таблице символов.

Многие вещи могут сделать это неточным. Если компилятор встраивает, скажем, функцию a в функцию b, то вы можете быть в функции a, но трассировка стека сообщит, что вы находитесь в b.

Если компилятор выполняет «оптимизацию хвостового вызова», где функция a заканчивается чем-то вроде return b();, а функция c вызывает функцию a, вы можете ожидать, что трассировка покажет c ->a ->b, но вы увидит только c ->b. Это может сбивать с толку, если вы посмотрите на исходный код c и увидите, что он никогда не вызывает b напрямую.

0
01.01.2021, 18:49
1 ответ

Это может быть связано с тем, что rfkillсоздает помехи вашим устройствам беспроводной локальной сети.

Попробуйте запустить rfkill unblock all.

0
18.03.2021, 22:39

Теги

Похожие вопросы