从虚拟化前端Bug学习分析Kernel Dump( 七 )

可以看到跳转的语句是 jb 0xffffffffc023a382 <virtqueue_add+1186> , 跳转的条件是 %eax 小于 [%rdi + 0x38
。 那 %eax 和 [%rdi + 0x38
里面存的值是什么呢?这个时候就需要对照源码来看了 。 通过 dis -l 可以看到函数所在的源文件 , 但是直接执行 dis -l ffffffffc0239ee0 会发现没有源文件的信息 , 这种情况通常是对应的 debug 模块没有导进来 。 通过 mod 命令可以看到当前的模块 , 找到我们需要的模块 , 通过 mod -s 找到模块对应的目录 , 再通过相同的命令导入即可 , 如:

把所有缺少的模块导入进来之后 , 再次执行dis -l ffffffffc0239ee0就可以看到对应的源文件了 。 部分 virtqueue_add 源代码如下:

通过dis -l ffffffffc0239ee0

推荐阅读