首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    定位Oops的具体代码行

    来自Linus Torvalds的讨论: https://groups.google.com/group/linux.kernel/browse_thread/thread/b70bffe9015a8c41/ed9c0a0cfcd31111 又,http://kerneltrap.org/Linux/Further_Oops_Insights         例如这样的一个Oops:                 Oops: 0000 [#1] PREEMPT SMP                   Modules linked in: capidrv kernelcapi isdn slhc ipv6 loop dm_multipath snd_ens1371 gameport snd_rawmidi snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd parport_pc floppy parport pcnet32 soundcore mii pcspkr snd_page_alloc ac i2c_piix4 i2c_core button power_supply sr_mod sg cdrom ata_piix libata dm_snapshot dm_zero dm_mirror dm_mod BusLogic sd_mod scsi_mod ext3 jbd mbcache uhci_hcd ohci_hcd ehci_hcd                 Pid: 1726, comm: kstopmachine Not tainted (2.6.24-rc3-module #2)                 EIP: 0060:[] EFLAGS: 00010092 CPU: 0                 EIP is at list_del+0xa/0x61                 EAX: e0c3cc04 EBX: 00000020 ECX: 0000000e EDX: dec62000                 ESI: df6e8f08 EDI: 000006bf EBP: dec62fb4 ESP: dec62fa4                  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068                 Process kstopmachine (pid: 1726, ti=dec62000 task=df8d2d40 task.ti=dec62000)                 Stack: 000006bf dec62fb4 c04276c7 00000020 dec62fbc c044ab4c dec62fd0 c045336c                        df6e8f08 c04532b4 00000000 dec62fe0 c043deb0 c043de75 00000000 00000000                        c0405cdf df6e8eb4 00000000 00000000 00000000 00000000 00000000                 Call Trace:                  [] show_trace_log_lvl+0x1a/0x2f                  [] show_stack_log_lvl+0x9b/0xa3                  [] show_registers+0xa3/0x1df                  [] die+0x11f/0x200                  [] do_page_fault+0x533/0x61a                  [] error_code+0x72/0x78                  [] __unlink_module+0xb/0xf                  [] do_stop+0xb8/0x108                  [] kthread+0x3b/0x63                  [] kernel_thread_helper+0x7/0x10                  =======================                 Code: 6b c0 e8

    02

    linux设备驱动程序第四部分:从如何定位oops对代码的调试方法,驱动线「建议收藏」

    在一个我们谈到了如何编写一个简单的字符设备驱动程序,我们不是神,编写肯定会失败的代码,在这个过程中,我们需要继续写代码调试。在普通c应用。我们经常使用printf输出信息。或者使用gdb要调试程序,然后司机如何调试它?的问题,在应用程序中执行这样的程序就会报segmentation fault的错误,而因为驱动程序的特殊性,出现此类情况后往往会直接造成系统宕机。并会抛出oops信息。那么我们怎样来分析oops信息呢,甚至依据oops信息来定位详细的出错的代码行呢?以下就依据一个简单的实例来说明怎样调试驱动程序。

    01

    全网最硬核 JVM 内存解析 - 7.元空间存储的元数据

    JVM 在执行 Java 应用程序时,将加载的 Java 类的许多细节记录在内存中,这些信息称为类元数据(Class MetaData)。这些元数据对于 Java 的很多灵活的语言以及虚拟机特性都是很重要的,比如动态类加载、JIT 实时编译、反射以及动态代理等等。不同的 JVM 加载类保存的内存信息是不一样的,它们通常在更低的内存占用与更快的执行速度之间进行权衡(类似于空间还是时间的权衡)。对于 OpenJDK Hotspot 使用的则是相对丰富的元数据模型来获得尽可能快的性能(时间优先,不影响速度的情况下尽量优化空间占用)。相比于 C,C++,Go 这些离线编译为可执行二进制文件的程序相比,像 JVM 这样的托管运行时动态解释执行或者编译执行的,则需要保留更多关于正在执行的代码的运行时信息。原因如下:

    04
    领券