内核准备
内核配置
建议从源代码重新编译内核,这样可以更方便地进行源代码级调试;当然自己从发行版官网下载相应内核的调试符号亦可以,通常情况下只用于应急分析,比如crash dump分析等。
自己编译Linux内核的话,最好打开两个选项:
CONFIG_DEBUG_INFO=y
CONFIG_GDB_SCRIPTS=y
可通过make menuconfig来设置内核配置项,分别以5.12及6.1.0为例:
5.12:
6.1.0:

禁止编译优化
无法针对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="noquiet nopti nokaslr console=ttyS0"
最直接的方式就是直接修改/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并中断目标机:

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

可通过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.

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
мостбет доступ сегодня мостбет доступ сегодня
mostbet Oʻzbekistonda kirish https://www.mostbet75681.help
Реабилитация с индивидуальным подходом позволяет значительно повысить вероятность успешного избавления от зависимости. Она помогает учитывать не только физиологические аспекты зависимости, но и личные проблемы пациента, его психологическое состояние и отношения с окружающим миром. Индивидуальная программа также увеличивает мотивацию пациента и снижает риск рецидивов. В некоторых случаях лечение наркомании или запоя может быть предоставлено бесплатно, в зависимости от программы социальной поддержки или доступных государственных услуг.
Ознакомиться с деталями – алкоголик реабилитация наркоманов
мелбет коэффициенты мелбет коэффициенты
мелбет мобильная версия https://melbet72804.help/
Нарколог на дом в Екатеринбурге востребован в ситуациях, когда человеку нужна врачебная помощь после употребления алкоголя, при запое, выраженном похмельном синдроме, нарушении сна, тревоге, скачках давления, слабости и других признаках ухудшения самочувствия. Такой формат обращения часто выбирают семьи, которые хотят вызвать врача без поездки в клинику и быстро получить консультацию по состоянию больного. Домашний выезд особенно важен тогда, когда требуется детоксикация, наблюдение после нескольких дней употребления спиртного и оценка рисков, связанных с последствиями алкоголизма.
Подробнее можно узнать тут – запой нарколог на дом екатеринбург
Наиболее частыми причинами обращения становятся запой, выраженная слабость, тремор, нарушение сна, тревога, учащенный пульс, нестабильное давление, тошнота и ощущение физического истощения. Эти проявления могут сочетаться между собой и усиливаться после прекращения употребления алкоголя, особенно если эпизод длился несколько дней.
Подробнее тут – врач нарколог на дом
мостбет лайв ставки мостбет лайв ставки
mostbetda qanday royxatdan otish mostbetda qanday royxatdan otish
мелбет как поставить экспресс https://www.melbet72804.help
Отдельного внимания требуют повторяющиеся эпизоды. Если тяжелое состояние после алкоголя возникает не впервые, а запои становятся регулярными, вопрос обычно выходит за рамки одного обращения. Тогда домашний выезд рассматривают не только как способ уменьшить острые проявления, но и как первый этап дальнейшей оценки проблемы. В подобных ситуациях нередко обсуждают не только вывод из запоя, но и то, как дальше будет выстраиваться помощь при зависимости.
Детальнее – нарколог на дом анонимно
mostbet balans tekshirish https://mostbet75681.help/
mostbet mines стратегия http://mostbet58019.help
мелбет киргизия скачать https://melbet72804.help/
Существует ряд ситуаций, при которых вызов специалиста на дом является обоснованным решением:
Подробнее – нарколог на дом анонимно нижний новгород
mostbet maksimal yutuq https://mostbet02759.help
mostbet ios rasmiy http://mostbet02759.help
шумоизоляция автомобиля в Москве shumoizolyaciya-avtomobilya-v-moskve-1.ru
Вызов капельницы от похмелья с контролем врача в Самаре рекомендуется, когда симптомы похмелья становятся особенно тяжелыми и мешают нормальной жизнедеятельности. Несмотря на то, что многие пытаются справиться с похмельем с помощью домашних методов, такие как прием жидкости или таблеток, они не всегда оказываются достаточно эффективными. В случае сильных симптомов похмелья, капельница с врачебным контролем — это более безопасное и быстрое решение, при этом возможен вывод в стационаре, анонимное лечение и консультации по вопросам наркомании с учетом актуальной цены услуг.
Подробнее – капельница от похмелья анонимно самара
В Нижнем Новгороде стационарный формат лечения применяется при наличии факторов, повышающих риск осложнений или снижающих эффективность домашней терапии. Врач принимает решение на основании осмотра, консультации и анализа данных, оценивая текущее состояние пациента и его реакцию на предыдущие попытки лечения. При необходимости можно заранее обратиться в центр лечения алкоголизма и наркомании или заказать услугу по телефону.
Детальнее – нарколог вывод из запоя в нижнем новгороде
как использовать бонус mostbet http://mostbet58019.help
мелбет баланс https://www.melbet72804.help
mostbet apk o‘rnatish http://www.mostbet75681.help
mostbet oyiga limit https://mostbet02759.help
мелбет android киргизия мелбет android киргизия
mostbet apelsin http://www.mostbet75681.help
mostbet мой аккаунт https://www.mostbet58019.help
Нарколог на дом — это формат медицинской помощи, при котором пациент получает лечение без посещения стационара. В наркологической клинике «Частный медик 24» в Нижнем Новгороде такая услуга используется при острых состояниях: запой, выраженная алкогольная интоксикация, абстинентный синдром, а также при необходимости срочного вмешательства без транспортировки больного. Выезд врача позволяет начать терапию в первые часы ухудшения состояния, что снижает риск осложнений и облегчает переносимость лечения.
Ознакомиться с деталями – narkolog-na-dom-nizhnij-novgorod.ru/
1вин авторизация 1win74028.help
мостбет банковская карта мостбет банковская карта
melbet скачать apk на android http://melbet59738.help
1win bonus sui-istifadə 1win30895.help
1win поддержка кыргызча 1win поддержка кыргызча
mostbet вывод KGS на карту http://mostbet50693.help/
мелбет контакты http://www.melbet59738.help
1win yeni güzgü https://1win30895.help
Процедура капельницы от похмелья с контролем врача в Самаре начинается с первичной консультации, на которой врач осматривает пациента, измеряет его основные показатели (давление, пульс, температуру) и оценивает общее состояние. На основе этих данных выбирается оптимальный состав капельницы, которая может включать в себя различные компоненты, такие как солевые растворы, витамины, антиоксиданты и медикаменты для снятия симптомов похмелья.
Узнать больше – капельница от похмелья на дом самара
1win чат поддержки 1win чат поддержки
мостбет сайт https://mostbet50693.help/
melbet отзывы киргизия https://www.melbet59738.help
1win aviator turniri 1win30895.help
melbet plinko http://melbet72804.help/
mostbet вывести без верификации http://www.mostbet58019.help
Такие условия позволяют начать лечение без задержек и обеспечить более мягкое восстановление. При этом помощь может предоставляться анонимно.
Исследовать вопрос подробнее – вывод из запоя на дому санкт-петербург
Вывод из запоя на дому в Санкт-Петербурге с выездом нарколога, детоксикацией и восстановлением состояния в наркологической клинике «Частный медик 24»
Исследовать вопрос подробнее – вывод из запоя на дому круглосуточно
1win verificare identitate https://1win82376.help
1win как скачать на android http://1win74028.help/
mostbet отыгрыш бонуса https://mostbet50693.help/
мелбет турниры слоты https://melbet59738.help/
1win plinko qaydaları 1win plinko qaydaları