通过QEMU/KVM GDB Stub进行内核调试

内核准备

内核配置

建议从源代码重新编译内核,这样可以更方便地进行源代码级调试;当然自己从发行版官网下载相应内核的调试符号亦可以,通常情况下只用于应急分析,比如crash dump分析等。

自己编译Linux内核的话,最好打开两个选项:

CONFIG_DEBUG_INFO=y
CONFIG_GDB_SCRIPTS=y

可通过make menuconfig来设置内核配置项,分别以5.12及6.1.0为例: 5.12: Linux kernel 5.12 menuconfig 6.1.0: Linux kernel 6.1.0 menuconfig

禁止编译优化

无法针对Linux内核禁止全局优化,但可以针对特定的源代码文件做禁止编译优化的处理,可通过以下方式达成:

在需要被调试的源代码文件头部增加下面一行代码:

#pragma GCC optimize ("O0")

或者修改其对应的Makefile,以文件名core.c为例:

CFLAGS_REMOVE_core.o := -O2
CFLAGS_core.o := -O0

镜像准备

建议通过libvirt来管理本地KVM虚拟机,这样使用起来非常方便,如果条件不允许的话亦可用qemu命令行方式来运行。

添加 gdb stub

下面的示例是以命令行方式来运行调试目标:

qemu-system-x86_64 -m 4096 -nographic -net user,hostfwd=tcp::44334-:22 -net nic -hda \
    debian-10.7.qcow2 -machine type=pc,accel=kvm -cpu host -smp 4 -gdb tcp:127.0.0.1:44333

“-gdb tcp:127.0.0.1:44333” 就是gdb stub的命令行参数,即gdb可连接localhost:44333来调试目标系统。

如果使用libvirt的话则需要修改QEMU配置,可通过命令virsh edit来进行修改,需要在末尾加上中间4行:

   </devices>

   <qemu:commandline>
    <qemu:arg value='-gdb'/>
    <qemu:arg value='tcp:localhost:44333'/>
  </qemu:commandline>

</domain>

另外还需要更改虚拟机配置文件的domain type,即将第一行从

<domain type='kvm'>

改为:

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

修改内核启动项

本步骤主要为了禁止内核地址随机化,不然内核符号无法定位并正确绑定。可通过修改grub项完成,在安装新内核过程中会自加增加nokaslr及nopti,当然在编译内核时亦可直接禁止相应功能亦可。

root@T490:~# cat /etc/default/grub | grep nokaslr
GRUB_CMDLINE_LINUX_DEFAULT=&quot;noquiet nopti nokaslr console=ttyS0&quot;

最直接的方式就是直接修改/boot/grub/grub.cfg文件,或者在系统启动时手工编译grub启动项亦可:

root@T490:~# cat /boot/grub/grub.cfg | grep nokaslr
    linux   /boot/vmlinuz-5.10.14 root=UUID=c4072cd3-9ed9-4376-b85c-95d1306e817b ro  noquiet nopti nokaslr console=ttyS0,115200

host端准备

前面我们就完成了guest端即调试目标机的配置,然后就是准备host端,可以用gdb,亦可以用vscode等gui工具,甚至可以用Windows Visual Studio配合VisualKernel工具来调试Linux系统。

源代码及调试符号vmlinux

将相应源代码及调试符号vmlinux复制到host端即可,复制时注意软链接问题,比如:

vmlinux-gdb.py -> /BUILD/linux-5.12/scripts/gdb/vmlinux-gdb.py

设置gdb的auto-load路径

建议直接修改 ~/.gdbinit文件,当然手动执行亦可,当处理多个调试机时最好通过.gdbinit来保存配置:

matt@T490 /W/K/debian-10.7> cat ~/.gdbinit 
add-auto-load-safe-path /usr/share/gdb/python/gdb/
add-auto-load-safe-path /usr/share/gdb/python/
add-auto-load-safe-path /usr/share/gdb/
add-auto-load-safe-path /BUILD/linux-5.12
set auto-load python-scripts on
source /BUILD/pwndbg/gdbinit.py

我本地的调试环境里安装的是pwndbg,已配置好了python组件

启动gdb

cd /BUILD/linux-5.12; gdb ./vmlinux

在gdb中执行以下执行开启内核调试:

    target remote :44333

然后gdb会自动加载pwndbg并中断目标机: Linux kernel 5.12 gdb

在内核gdb scripts加载成功的情况下可以执行lx系列扩展命令以获取内核信息: Linux kernel 5.12 gdb scripts

可通过apropos lx查询相应的gdb scripts扩展命令,如lx-lsmod, 变量:$lx_current():

gdb> apropos lx
function lx_clk_core_lookup -- Find struct clk_core by name
function lx_current -- Return current task.
function lx_device_find_by_bus_name -- Find struct device by bus and name (both strings)
function lx_device_find_by_class_name -- Find struct device by class and name (both strings)
function lx_module -- Find module by name and return the module variable.
function lx_per_cpu -- Return per-cpu variable.
function lx_rb_first -- Lookup and return a node from an RBTree
function lx_rb_last -- Lookup and return a node from an RBTree.
function lx_rb_next -- Lookup and return a node from an RBTree.
function lx_rb_prev -- Lookup and return a node from an RBTree.
function lx_task_by_pid -- Find Linux task by PID and return the task_struct variable.
function lx_thread_info -- Calculate Linux thread_info from task variable.
function lx_thread_info_by_pid -- Calculate Linux thread_info from task variable found by pid
lx-clk-summary -- Print clk tree summary
lx-cmdline --  Report the Linux Commandline used in the current kernel.
lx-configdump -- Output kernel config to the filename specified as the command
lx-cpus -- List CPU status arrays
lx-device-list-bus -- Print devices on a bus (or all buses if not specified)
lx-device-list-class -- Print devices in a class (or all classes if not specified)
lx-device-list-tree -- Print a device and its children recursively
lx-dmesg -- Print Linux kernel log buffer.
lx-fdtdump -- Output Flattened Device Tree header and dump FDT blob to the filename
lx-genpd-summary -- Print genpd summary
lx-iomem -- Identify the IO memory resource locations defined by the kernel
lx-ioports -- Identify the IO port resource locations defined by the kernel
lx-list-check -- Verify a list consistency
lx-lsmod -- List currently loaded modules.
lx-mounts -- Report the VFS mounts of the current process namespace.
lx-ps -- Dump Linux tasks.
lx-symbols -- (Re-)load symbols of Linux kernel and currently loaded modules.
lx-timerlist -- Print /proc/timer_list
lx-version --  Report the Linux Version of the current kernel.

Linux kernel 6.0 gdb Linux kernel 6.0 gdb Linux kernel 6.0 gdb

gdb常用命令及调试技巧

常用命令

常用gdb指令:bt, disass, step, next, break/delete, print, x/[i/g/d]等,具体可查询gdb命令手册

断点设置

使用break命令可设置断点,支持以下几种命令格式:

  • break 函数名: break dump_stack
  • break source_file:line_number: break smith_hook.c:70
  • break 逻辑地址:break 0xffffffff81003010,可以强制break跳过符号/函数名识别

针对模块的调试,可以考虑在模块中增加不常用内核函数的调用,如dump_stack;模块加载前是无法设置断点的,但内核函数的调用是可以的,这样就可以在模块调用指定内核函数时触发断点,然后再通过add-symbol-file /path_to/ko_file base_address,base_address或通过lx-lsmod查询得到,即模块在内核中的内存位置,之后就可以访问模块内的符号了,如全局变量或内部函数

X86_64位环境调试32位虚拟机

需要在attach前设置目标及当前系统架构,如 set architecture i386:x86-64。建议安装gdb-multiarch,以免系统自带gdb不支持多种架构:

pwndbg> target remote :44323
Remote debugging using :44323
warning: Selected architecture i386 is not compatible with reported target architecture i386:x86-64
warning: Architecture rejected target-supplied description
Remote 'g' packet reply is too long (expected 312 bytes, got 608 bytes): 102b91c10......0000

pwndbg> set architecture i386:x86-64
The target architecture is set to "i386:x86-64".
pwndbg> target remote :44323
Remote debugging using :44323
0x00000000c1912b23 in default_idle () at arch/x86/kernel

16,420 条评论

  1. Интересно, как сейчас обстоят дела с управлением процессами в медорганизациях? Нужно разобраться в новых требованиях. Особенно интересует связь между организацией здравоохранения и общественным здоровьем подведомственные организации министерства здравоохранения профстандарт организация здравоохранения Буду благодарен за советы

  2. Как вам новые профстандарты в сфере общественного здоровья? Что думаете по поводу управления процессами в медорганизациях? должность организация здравоохранения специальность организация здравоохранения Кстати, недавно наткнулся на полезный материал по этой теме. Думаю, будет полезно.

  3. Нарколог оценивает жалобы, пульс, артериальное давление, уровень сознания и признаки обезвоживания. Диагностика помогает определить, какой формат лечения будет безопасным. В тяжелой ситуации больному необходима скорая помощь, а обычный выезд врача на дому может быть недостаточен.
    Подробнее – https://vyvod-iz-zapoya-balashiha15.ru/

  4. Если вам нужен вывод из запоя на дому круглосуточно, наши специалисты готовы прийти на помощь в любое время суток. По номеру центра можно получить информацию о порядке выезда в Кемерово, стоимости услуги, условиях размещения в стационаре и дальнейших вариантах лечения алкоголизма. Если ситуация развивается критически, возникают судороги, потеря сознания, нарушения дыхания или сильнейшая дезориентация, нужна скорая помощь.
    Ознакомиться с деталями – вывод из запоя капельница на дому Кемерово

  5. Какие подходы к управлению наиболее актуальны для медицинских организаций? стоит изучать в управлении процессами больниц. Ключевое значение имеют бережливые технологии для повышения качества услуг. управление персоналом медицинской организации управление и экономика здравоохранения Где можно пройти обучение по организации здравоохранения? Программы по организации здравоохранения и общественному здоровью помогут улучшить управленческие навыки.

  6. Частная наркологическая клиника доктора Лазарева эффективно осуществляет лечение зависимости в Санкт-Петербурге с 2008 года. Для каждого пациента составляется индивидуальная программа курса терапии на дому или в реабилитационном центре. Лечение осуществляется с учетом характера зависимости, состояния органов, возраста, длительности употребления, результатов диагностики и готовности пациента меняться. Комплексность программы является значимым преимуществом: врач работает не только с физическими проявлениями болезни, но и с психологическими причинами пагубной привычки.
    Дополнительная информация – nnarkologicheskaya-klinika-sankt-peterburg14.ru/

  7. Данный факт гласит о срочной необходимости врачебного вмешательства для выведения из запоя в стационаре клиники и последующего квалифицированного лечения алкогольной зависимости. Если зависимый перестал реагировать на окружающих, появились судороги или угроза смерти, нельзя ждать приезда плановой бригады: требуется экстренная помощь.
    Дополнительная информация – вывод из запоя вызов Кемерово

  8. Наркологическая клиника «Мед Алко» в Москве оказывает медицинскую помощь людям с алкогольной и наркотической зависимостью. Лечение организуется анонимно, круглосуточно и с учетом клинической ситуации каждого обратившегося. Врач оценивает физическое и психическое состояние, историю употребления алкоголя или наркотиков, хронические заболевания, длительность зависимости и предыдущий опыт терапии. После первичной диагностики определяется индивидуальный план: детоксикация, вывод из запоя, снятие ломки, медикаментозное лечение, кодирование, психотерапия, амбулаторное наблюдение или лечение в стационаре.
    Подробнее – http://narkologicheskaya-klinika-moskva15-4.ru/

  9. Эта статья освещает различные аспекты освобождения от зависимости и пути к выздоровлению. Мы обсуждаем важность осознания своей проблемы и обращения за помощью. Читатели получат практические советы о том, как преодолевать трудности и строить новую жизнь без зависимости.
    Всё самое вкусное внутри – кодирование от алкоголизма

  10. Коллеги, кто уже проходил курсы по менеджменту в здравоохранении? Буду признателен за любую информацию. подведомственные организации департамента здравоохранения международная организация здравоохранения Хочется разобраться в управлении процессами в медорганизациях — может, посоветуете хорошие курсы?

  11. Вывод из запоя на дому позволяет провести лечение без поездки в медицинский центр, если состояние пациента соответствует домашнему формату. Нарколог приезжает на дому с лекарственными препаратами и оборудованием, проводит первичную диагностику и выбирает схему лечения. Лечение на дому особенно удобно людям, которым психологически спокойнее находиться в знакомой обстановке.
    Ознакомиться с деталями – https://viivod-iz-zapoya-v-sankt-peterburge16.ru/

  12. Лечение в наркологии может состоять из нескольких последовательных направлений. Одному человеку требуется вывод из запоя и последующая терапия алкоголизма, другому — лечение наркомании с длительной реабилитацией, третьему — консультация психиатра или психотерапевта. В каждом случае задача специалистов заключается в том, чтобы подобрать медицинское решение с учетом диагноза, состояния здоровья, опыта предыдущего лечения и целей самого зависимого.
    Получить больше информации – наркологическая клиника в москве

  13. Капельница на дому «Элегия Мед» в Москве — медицинская услуга для людей, которым по назначению врача требуется внутривенное введение раствора, лекарственных средств, витаминов или других препаратов без посещения стационара. Выезд на дому позволяет провести процедуру в привычной и комфортной обстановке, если состояние человека допускает лечение вне клиники. Медицинский специалист оценивает самочувствие, изучает документы и назначения, уточняет наличие хронической патологии, противопоказания и возможные реакции на лекарства. Только после этого принимается решение, можно ли ставить капельницу на дому или безопаснее направить больного в клинику.
    Подробнее – https://kapelnitsa-na-domu-v-moskwe4.ru/

  14. Для назначения капельницы врачу необходимо определить клиническую задачу. Это может быть восполнение жидкости, введение назначенного препарата, поддержка организма после интоксикации или проведение курса по рекомендации профильного доктора. Оптимальное сочетание компонентов зависит от диагноза, возраста, анализов и общего самочувствия.
    Узнать больше – vyzvat-postavit-kapelnicu-na-dom

  15. Эта публикация содержит ценные советы и рекомендации по избавлению от зависимости. Мы обсуждаем различные стратегии, которые могут помочь в процессе выздоровления и важность обращения за помощью. Читатели смогут использовать полученные знания для улучшения своего состояния.
    Получить больше информации – лечение неврастении у женщин

  16. В этой статье рассматриваются различные аспекты избавления от зависимости, включая физические и психологические методы. Мы обсудим поддержку, мотивацию и стратегии, которые помогут в процессе выздоровления. Читатели узнают, как преодолеть трудности и двигаться к новой жизни без зависимости.
    Получить профессиональную консультацию – https://torpedo-med.ru/narkologicheskaya-pomoshh/konsultacziya-narkologa

  17. Оформить вызов на дому можно по телефону или через заявку на сайте. Оператор центра уточняет контактные данные, адрес в Москве, удобное время, причину обращения и наличие медицинских документов. Если препарат уже назначен, стоит сообщить его название и дозировку. Если схемы лечения нет, сначала проводится консультация врача, после которой специалист решает, можно ли сделать капельницу на дому.
    Изучить вопрос подробнее – капельницы на дом круглосуточно

  18. Если вам нужен вывод из запоя на дому круглосуточно, наши специалисты готовы прийти на помощь в любое время суток. По номеру центра можно получить информацию о порядке выезда в Кемерово, стоимости услуги, условиях размещения в стационаре и дальнейших вариантах лечения алкоголизма. Если ситуация развивается критически, возникают судороги, потеря сознания, нарушения дыхания или сильнейшая дезориентация, нужна скорая помощь.
    Подробнее – наркология вывод из запоя Кемерово

  19. Наркологическая клиника в Санкт-Петербурге оказывает широкий спектр услуг людям, которые столкнулись с алкоголизмом, наркоманией, запоем, похмельным синдромом или другими формами зависимости. Клиника принимает пациентов круглосуточно, проводит диагностику, детоксикацию, медикаментозное лечение, кодирование, психотерапию и реабилитацию. Опытные врачи помогают стабилизировать физическое и психоэмоциональное состояние, справиться с последствиями употребления спиртного или психотропных веществ и сделать первые шаги к здоровой жизни.
    Получить больше информации – наркологическая клиника нарколог Санкт-Петербург

  20. Обратиться в наркологическую клинику можно при длительном употреблении алкоголя, регулярных запоях, абстинентном синдроме, употреблении психоактивных веществ или повторных срывах после попыток лечения. Врач определяет, какие процедуры необходимы сейчас и какой этап лечения потребуется в дальнейшем. При необходимости помощь проводится в стационаре или начинается с выезда нарколога на дом.
    Ознакомиться с деталями – лечение в наркологической клинике в Кемерово

  21. В этой статье мы рассмотрим современные достижения в области медицины, включая инновационные методы лечения и диагностики. Мы обсудим важность профилактики заболеваний и роль технологий в улучшении качества здравоохранения. Читатели узнают о влиянии медицины на повседневную жизнь и ее значение для современного общества.
    Подробности по ссылке – rostov-na-donu premium clinic com

  22. В этой статье мы говорим о важности поддержки в процессе выздоровления. Рассматриваются семьи, группы поддержки, специалисты и онлайн-ресурсы, которые могут сыграть решающую роль в избавлении от зависимости.
    Хочешь знать всё? – Наркология Евро-Клиник в Красноярске

  23. Наркологическая клиника в Санкт-Петербурге оказывает широкий спектр услуг людям, которые столкнулись с алкоголизмом, наркоманией, запоем, похмельным синдромом или другими формами зависимости. Клиника принимает пациентов круглосуточно, проводит диагностику, детоксикацию, медикаментозное лечение, кодирование, психотерапию и реабилитацию. Опытные врачи помогают стабилизировать физическое и психоэмоциональное состояние, справиться с последствиями употребления спиртного или психотропных веществ и сделать первые шаги к здоровой жизни.
    Дополнительная информация – наркологическая клиника лечение алкоголизма в Санкт-Петербурге

  24. Лечение на дому подходит во многих случаях легкой и средней тяжести, когда человек находится в сознании, способен контактировать с врачом и у него нет признаков острых осложнений. Выезд нарколога позволяет получить медицинскую помощь в удобное время без поездки в клинику. Наркологическая бригада приезжает по указанному адресу, проводит осмотр, уточняет длительность употребления алкоголя, выполняет диагностику и подбирает состав лечения с учетом индивидуальных особенностей.
    Узнать больше – vyvod-iz-zapoya-cena-balashiha

  25. Услуги на дому могут использоваться при плановой инфузионной терапии, восстановлении после болезни, обезвоживании и других состояниях, при которых врач ранее назначил внутривенное введение. Подбор схемы проходит индивидуально. Капельница на дому имеет ограничения, поэтому перед ее проведением требуется медицинский прием и оценка текущих показателей.
    Дополнительная информация – капельница от запоя на дому цена

  26. Этот обзор посвящен успешным стратегиям избавления от зависимости, включая реальные примеры и советы. Мы разоблачим мифы и предоставим читателям достоверную информацию о различных подходах. Получите опыт многообразия методов и найдите подходящий способ для себя!
    Получить больше информации – лечение паранойи у мужчин

  27. В этой статье мы обсудим процесс восстановления после зависимостей, акцентируя внимание на различных методах и подходах к реабилитации. Читатели узнают, как создать план выздоровления и использовать полезные ресурсы для достижения устойчивых изменений.
    Ознакомиться с деталями – euro-clinic

  28. Обзор посвящён процессу восстановления после зависимостей. Мы расскажем о различных этапах реабилитации, поддерживающих ресурсах и важности мотивации в достижении устойчивого выздоровления.
    Рассмотреть проблему всесторонне – срочная психиатрическая помощь

  29. Центр «Элегия Мед» организует услуги на дому круглосуточно по Москве и Московской области. Чтобы вызвать врача, достаточно оставить заявку по телефону через оператора или воспользоваться формой записи на сайте. Администратор уточнит адрес, район, удобное время, причину обращения и необходимые данные для организации выезда. Информация о здоровье и обработку персональных данных осуществляют с учетом политики конфиденциальности и требований действующего законодательства. Обращение не требует длительного ожидания: при наличии свободной бригады специалист может приехать срочно, однако точное время зависит от района, дорожной ситуации и текущего графика персонала.
    Получить больше информации – platnye-kapelnicy-na-domu

  30. Капельница на дому не сводится к механическому введению раствора. Медик оценивает состояние пациента, давление, пульс, температуру, показатели крови при наличии результатов, переносимость препаратов и вероятность осложнений. Для медицинского персонала важны качество процедуры, корректная дозировка и контроль реакции организма. Выездной формат особенно удобен пожилому человеку, человеку со сниженной физической активностью или тому, кому тяжело посещать клиники самостоятельно.
    Узнать больше – https://kapelnitsa-na-domu-v-moskwe1.ru/

  31. Эта публикация содержит ценные советы и рекомендации по избавлению от зависимости. Мы обсуждаем различные стратегии, которые могут помочь в процессе выздоровления и важность обращения за помощью. Читатели смогут использовать полученные знания для улучшения своего состояния.
    Читать далее > – неврастения лечение

  32. Какие подходы к управлению наиболее актуальны для медицинских организаций? нужно учитывать в управлении процессами поликлиник. Ключевое значение имеют бережливые технологии для оптимизации работы. управление и экономика здравоохранения https://invexo.ru Как получить актуальные знания по управлению в медицине? Программы по организации здравоохранения и общественному здоровью помогут улучшить управленческие навыки.

  33. Врачебная тайна — это основа доверия между пациентом и врачом. Как быть, если врач допустил ошибку при оказании помощи? Здесь на первый план выходят юридические аспекты медицины. медицинское право порядок оказания медицинской помощи по педиатрии Информированное добровольное согласие на медицинское вмешательство — это не просто формальность. Это позволяет избежать многих спорных ситуаций. Кроме того, стоит помнить о стандартах оказания медицинской помощи. Они утверждаются на основании ФЗ 61 об обращении лекарственных средств.

  34. Продолжительное употребление алкоголя приводит к накоплению продуктов распада этанола, обезвоживанию, нарушениям электролитного баланса и ухудшению работы органов. Человек может чувствовать слабость, тревожность, тремор, бессонницу, тошноту, боль, сердцебиение и резкое ухудшение общего состояния. В таких случаях самостоятельное лечение не всегда эффективно и иногда опасно. Нарколог оценивает тяжесть абстиненции, проверяет основные показатели и определяет, можно ли провести вывод из запоя на дому или безопаснее продолжить лечение в клинике.
    Узнать больше – vrach-vyvod-iz-zapoya

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注