博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 动态输出 dynamic_debug
阅读量:4283 次
发布时间:2019-05-27

本文共 5507 字,大约阅读时间需要 18 分钟。

  • 怎么打开
在 def_config中添加CONFIG_DEBUG_FS=y CONFIG_DYNAMIC_DEBUG=y设置def_config 之后,有3种方式可以打印动态信息.
  • 以sd存储卡为例
# cat /sys/kernel/debug/dynamic_debug/control  |grep  "drivers/mmc"drivers/mmc/core/core.c:158 [mmc_core]mmc_request_done =_ "%s: req done 
: %d: %08x %08x %08x %08x\012"drivers/mmc/core/core.c:164 [mmc_core]mmc_request_done =_ "%s: req done (CMD%u): %d: %08x %08x %08x %08x\012"drivers/mmc/core/core.c:169 [mmc_core]mmc_request_done =_ "%s: %d bytes transferred: %d\012"drivers/mmc/core/core.c:177 [mmc_core]mmc_request_done =_ "%s: (CMD%u): %d: %08x %08x %08x %08x\012"drivers/mmc/core/core.c:201 [mmc_core]mmc_start_request =_ "<%s: starting CMD%u arg %08x flags %08x>\012"drivers/mmc/core/core.c:206 [mmc_core]mmc_start_request =_ "%s: starting CMD%u arg %08x flags %08x\012"drivers/mmc/core/core.c:214 [mmc_core]mmc_start_request =_ "%s: blksz %d blocks %d flags %08x tsac %d ms nsac %d\012"drivers/mmc/core/core.c:220 [mmc_core]mmc_start_request =_ "%s: CMD%u arg %08x flags %08x\012"drivers/mmc/core/core.c:471 [mmc_core]mmc_wait_for_req_done =_ "%s: req failed (CMD%u): %d, retrying...\012"drivers/mmc/core/core.c:655 [mmc_core]mmc_interrupt_hpi =_ "%s: HPI cannot be sent. Card state=%d\012"drivers/mmc/core/core.c:994 [mmc_core]mmc_set_ios =_ "%s: clock %uHz busmode %u powermode %u cs %u Vdd %u width %u timing %u\012"drivers/mmc/core/core.c:1569 [mmc_core]mmc_set_signal_voltage =_ "%s: Signal voltage switch failed, power cycling card\012"drivers/mmc/core/core.c:1628 [mmc_core]mmc_power_up =_ "Initial signal voltage of 3.3v\012"drivers/mmc/core/core.c:1630 [mmc_core]mmc_power_up =_ "Initial signal voltage of 1.8v\012"drivers/mmc/core/core.c:1632 [mmc_core]mmc_power_up =_ "Initial signal voltage of 1.2v\012"drivers/mmc/core/core.c:2273 [mmc_core]mmc_calc_max_discard =_ "%s: calculated max. discard sectors %u for timeout %u ms\012"drivers/mmc/core/core.c:2396 [mmc_core]_mmc_detect_card_removed =_ "%s: card removed too slowly\012"drivers/mmc/core/core.c:2401 [mmc_core]_mmc_detect_card_removed =_ "%s: card remove detected\012"drivers/mmc/core/host.c:329 [mmc_core]mmc_of_parse =_ "\042bus-width\042 property is missing, assuming 1 bit.\012"drivers/mmc/core/sdio_io.c:68 [mmc_core]sdio_enable_func =_ "SDIO: Enabling device %s...\012"drivers/mmc/core/sdio_io.c:93 [mmc_core]sdio_enable_func =_ "SDIO: Enabled device %s\012"drivers/mmc/core/sdio_io.c:98 [mmc_core]sdio_enable_func =_ "SDIO: Failed to enable device %s\012"drivers/mmc/core/sdio_io.c:118 [mmc_core]sdio_disable_func =_ "SDIO: Disabling device %s...\012"drivers/mmc/core/sdio_io.c:130 [mmc_core]sdio_disable_func =_ "SDIO: Disabled device %s\012"drivers/mmc/core/sdio_io.c:135 [mmc_core]sdio_disable_func =_ "SDIO: Failed to disable device %s\012"drivers/mmc/core/sdio_irq.c:52 [mmc_core]process_sdio_pending_irqs =_ "%s: error %d reading SDIO_CCCR_INTx\012"drivers/mmc/core/sdio_irq.c:121 [mmc_core]sdio_irq_thread =_ "%s: IRQ thread started (poll period = %lu jiffies)\012"drivers/mmc/core/sdio_irq.c:188 [mmc_core]sdio_irq_thread =_ "%s: IRQ thread exiting with code %d\012"drivers/mmc/core/sdio_irq.c:277 [mmc_core]sdio_claim_irq =_ "SDIO: Enabling IRQ for %s...\012"drivers/mmc/core/sdio_irq.c:280 [mmc_core]sdio_claim_irq =_ "SDIO: IRQ for %s already in use.\012"drivers/mmc/core/sdio_irq.c:320 [mmc_core]sdio_release_irq =_ "SDIO: Disabling IRQ for %s...\012"drivers/mmc/core/quirks.c:94 [mmc_core]mmc_fixup_device =_ "calling %pf\012"drivers/mmc/card/block.c:429 [mmc_block]ioctl_do_sanitize =_ "%s: %s - SANITIZE IN PROGRESS...\012"drivers/mmc/card/block.c:440 [mmc_block]ioctl_do_sanitize =_ "%s: %s - SANITIZE COMPLETED\012"drivers/mmc/host/mmci.c:791 [mmci]mmci_start_data =_ "blksz %04x blks %04x flags %08x\012"drivers/mmc/host/mmci.c:883 [mmci]mmci_start_command =_ "op %02x arg %08x flags %08x\012"drivers/mmc/host/mmci.c:938 [mmci]mmci_data_irq =_ "MCI ERROR IRQ, status 0x%08x at 0x%08x\012"drivers/mmc/host/mmci.c:1163 [mmci]mmci_pio_irq =_ "irq1 (pio) %08x\012"drivers/mmc/host/mmci.c:1258 [mmci]mmci_irq =_ "irq0 (data+cmd) %08x\012"drivers/mmc/host/mmci.c:1546 [mmci]mmci_probe =_ "designer ID = 0x%02x\012"drivers/mmc/host/mmci.c:1547 [mmci]mmci_probe =_ "revision = 0x%01x\012"drivers/mmc/host/mmci.c:1578 [mmci]mmci_probe =_ "eventual mclk rate: %u Hz\012"drivers/mmc/host/mmci.c:1615 [mmci]mmci_probe =_ "clocking block at %u Hz\012"
  • 前提
要想控制动态打印信息打印到控制台上,需要设置, echo 8  > /proc/sys/kernel/printk 因为动态打印信息级别为 7 , 在小于 8(控制台打印级别) 的情况下可以打出来

1 启动后动态打印设置

  • 测试1
echo 'module mmci +p' > /sys/kernel/debug/dynamic_debug/control就会循环打印出mmci-pl18x 10005000.mmci: op 0d arg 45670000 flags 00000195mmci-pl18x 10005000.mmci: irq0 (data+cmd) 00000040mmci-pl18x 10005000.mmci: irq0 (data+cmd) 00000000然后 关闭打印echo 'module mmci -p' > /sys/kernel/debug/dynamic_debug/control就会停止打印
  • 测试2
echo 'module mmc_core +p' > /sys/kernel/debug/dynamic_debug/controlmmc0: req done (CMD13): 0: 00000900 00000000 00000000 00000000mmc0: starting CMD13 arg 45670000 flags 00000195echo 'module mmc_core -p' > /sys/kernel/debug/dynamic_debug/control

2 启动前动态打印设置

qemu-system-arm 参数-append 中 添加 loglevel=8 mmc_core.dyndbg=+plft-append "init=/linuxrc console=ttyAMA0 loglevel=8 root=/dev/mmcblk0 mmc_core.dyndbg=+plft"就会打印 mmc_core模块 的 动态打印信息

3 编译时动态打印设置

在你关系的模块的目录下的Makefile下添加如下代码,例如 mmc_core ,对应 drivers/mmc/core/Makefile ccflags-y := -DDEBUGccflags-y += -DVERBOSE_DEBUG

其他启动后动态打印设置

echo 'file xxx.c +p''module xxx +p''func xxx +p'echo -n '*usb* +p' 	// 打开文件路径中包含usb的文件里面所有的动态输出语句echo -n '+p'		// 打开系统所有文件里面所有的动态输出语句

转载地址:http://gengi.baihongyu.com/

你可能感兴趣的文章
C语言 文件操作的头文件
查看>>
C语言的常用库函数(dos)之四(dir.h文件下的一些函数)
查看>>
warning: jobserver unavailable: using -j1. Add `+' to parent make rule问题怎么解决
查看>>
防火墙报文转发流程
查看>>
以太坊创始人:17岁的亿万富翁养成记
查看>>
linux下IPTABLES配置详解
查看>>
关于iptables -m选项以及规则的理解
查看>>
linux系统中查看己设置iptables规则
查看>>
一些库函数的使用注意事项
查看>>
IPv6地址自动配置中的有状态(stateful)和无状态(stateless)的区别
查看>>
阿里云 ACP 云安全 题库总结
查看>>
阿里云 ACP 云安全 题库 -- 数据库审计部分
查看>>
GC 回收机制
查看>>
探究 Android MVC、MVP、MVVM 的区别以及优缺点
查看>>
深入分析 Handler 内存泄露
查看>>
解决 windows 文件被占用的问题 -- The action can‘t be completed because the folder is open in another program
查看>>
Tencent/matrix错误:Cause: need sign apk but apksigner *\Sdk/build-tools/*/apksigner was not exist
查看>>
Android6.0运行时权限详解
查看>>
Android 开机启动过程
查看>>
View 的事件分发机制(一)
查看>>