Chinaunix

标题: kgdb bt 跟 dump_stack() 差异 [打印本页]

作者: shihyu    时间: 2015-10-03 23:54
标题: kgdb bt 跟 dump_stack() 差异
本帖最后由 shihyu 于 2015-10-03 23:56 编辑

为什么使用 kgdb 的 bt 跟代码中使用 dump_stack() 打印出来讯息差异那多?

第一组讯息是 gdb bt 打印出来就很完整 , 而  第二组是 dump_stack() 打印出来讯息就少很多

这是什么原因造成?
  1. #0  lowmem_shrink (s=<optimized out>, sc=0xec923c84) at drivers/staging/android/lowmemorykiller.c:89
  2. #1  0xc00a0374 in do_shrinker_shrink (nr_to_scan=0, sc=0xec923d78, shrinker=0xc0518488 <lowmem_shrinker>) at mm/vmscan.c:277
  3. #2  shrink_slab (shrink=0xec923d78, shrink@entry=0xec923d70, nr_pages_scanned=1, lru_pages=3226603292, lru_pages@entry=52207) at mm/vmscan.c:326
  4. #3  0xc00a3010 in do_try_to_free_pages (shrink=0xec923d70, sc=0xec923d78, zonelist=0xc0520830 <contig_page_data+2208>) at mm/vmscan.c:2426
  5. #4  try_to_free_pages (zonelist=zonelist@entry=0xc0520830 <contig_page_data+2208>, order=order@entry=64, gfp_mask=gfp_mask@entry=131290, nodemask=nodemask@entry=0x0)
  6.     at mm/vmscan.c:2509
  7. #5  0xc0097c24 in __alloc_pages_direct_reclaim (did_some_progress=<synthetic pointer>, migratetype=131290, preferred_zone=0x40, alloc_flags=2, nodemask=0x0,
  8.     high_zoneidx=<optimized out>, zonelist=0xc0520830 <contig_page_data+2208>, order=0, gfp_mask=131290) at mm/page_alloc.c:2129
  9. #6  __alloc_pages_slowpath (migratetype=131290, preferred_zone=0x1, nodemask=0x0, high_zoneidx=ZONE_MOVABLE, zonelist=0xc0520830 <contig_page_data+2208>, order=0, gfp_mask=131290)
  10.     at mm/page_alloc.c:2351
  11. #7  __alloc_pages_nodemask (gfp_mask=131290, order=order@entry=0, zonelist=0xc0520830 <contig_page_data+2208>, nodemask=nodemask@entry=0x0) at mm/page_alloc.c:2479
  12. #8  0xc00b11a8 in __alloc_pages (zonelist=<optimized out>, order=0, gfp_mask=131290) at include/linux/gfp.h:302
  13. #9  alloc_pages_node (order=0, gfp_mask=131290, nid=<optimized out>) at include/linux/gfp.h:312
  14. #10 __alloc_zeroed_user_highpage (vaddr=793632768, vma=0xecefd230, movableflags=8) at include/linux/highmem.h:192
  15. #11 alloc_zeroed_user_highpage_movable (vaddr=793632768, vma=0xecefd230) at include/linux/highmem.h:214
  16. #12 do_anonymous_page (flags=3221952572, pmd=0xecefd230, page_table=0xec1fc378, address=793632768, vma=0xecefd230, mm=0xec905c80) at mm/memory.c:3179
  17. #13 handle_pte_fault (mm=mm@entry=0xec905c80, vma=vma@entry=0xecefd230, address=address@entry=793632768, pte=0xec1fc378, pmd=pmd@entry=0xec92cbd0, flags=flags@entry=41)
  18.     at mm/memory.c:3484
  19. #14 0xc00b183c in handle_mm_fault (mm=mm@entry=0xec905c80, vma=vma@entry=0xecefd230, address=address@entry=793632768, flags=flags@entry=41) at mm/memory.c:3598
  20. #15 0xc0013c0c in __do_page_fault (tsk=0xec91c400, flags=41, fsr=2071, addr=793632768, mm=0xec905c80) at arch/arm/mm/fault.c:247
  21. #16 do_page_fault (addr=793632768, fsr=2071, regs=0xec923fb0) at arch/arm/mm/fault.c:309
  22. #17 0xc00083b0 in do_DataAbort (addr=793632768, fsr=2071, regs=0xec923fb0) at arch/arm/mm/fault.c:548
  23. ---Type <return> to continue, or q <return> to quit---
  24. #18 0xc000dc74 in __dabt_usr () at arch/arm/kernel/entry-armv.S:410
复制代码
  1. <4>[<c0012a14>] (unwind_backtrace+0x0/0xf0) from [<c0011514>] (dump_stack+0x10/0x14)
  2. <4>[<c0011514>] (dump_stack+0x10/0x14) from [<c02a3f4c>] (lowmem_shrink+0x9c/0x554)
  3. <4>[<c02a3f4c>] (lowmem_shrink+0x9c/0x554) from [<c00a0374>] (shrink_slab+0xbc/0x394)
  4. <4>[<c00a0374>] (shrink_slab+0xbc/0x394) from [<c00a3010>] (try_to_free_pages+0x2d8/0x510)
  5. <4>[<c00a3010>] (try_to_free_pages+0x2d8/0x510) from [<c0097c24>] (__alloc_pages_nodemask+0x424/0x7a0)
  6. <4>[<c0097c24>] (__alloc_pages_nodemask+0x424/0x7a0) from [<c00b11a8>] (handle_pte_fault+0x14c/0x72c)
  7. <4>[<c00b11a8>] (handle_pte_fault+0x14c/0x72c) from [<c00b183c>] (handle_mm_fault+0xb4/0xc8)
  8. <4>[<c00b183c>] (handle_mm_fault+0xb4/0xc8) from [<c0013c0c>] (do_page_fault+0x110/0x280)
  9. <4>[<c0013c0c>] (do_page_fault+0x110/0x280) from [<c00083b0>] (do_DataAbort+0x38/0x98)
  10. <4>[<c00083b0>] (do_DataAbort+0x38/0x98) from [<c000dc74>] (__dabt_usr+0x34/0x40)
  11. <4>Exception stack(0xccebffb0 to 0xccebfff8)
  12. <4>ffa0:                                     985c0000 01010101 00042fc0 01010101
  13. <4>ffc0: 01010101 01010101 01010101 01010101 00000000 00000000 00000000 be8fcafc
  14. <4>ffe0: 01010101 be8fcaa8 01010101 b6f277a8 20000010 ffffffff
复制代码

作者: shihyu    时间: 2015-10-06 23:27
本帖最后由 shihyu 于 2015-10-06 23:27 编辑

有谁知道为什么?
作者: nswcfd    时间: 2015-10-08 17:16
是同一个内核么?编译选项啥的都一样?
作者: shihyu    时间: 2015-10-12 09:12
本帖最后由 shihyu 于 2015-10-12 09:12 编辑

内核&编译选项都一样
作者: nswcfd    时间: 2015-10-12 16:58
本帖最后由 nswcfd 于 2015-10-12 17:34 编辑

这个kgdb可以打印出行号信息, 是通过串口打印出来的远程设备的栈?
作者: nswcfd    时间: 2015-10-12 18:48
在本机使用kdb(不是kgdb)的bt命令打印的stack trace是什么样子?
看代码跟dump_stack一样,都是调用了show_stack,估计是类似的?

kgdb是在kernel端实现了一个gdb stub,具体的bt是由对端的gdb完成的,
gdb有debug信息,但还是不明白为什么能够把栈展开的更详细一些(毕竟stack上的内容都是一样的)?

作者: nswcfd    时间: 2015-10-12 19:08
本帖最后由 nswcfd 于 2015-10-12 19:11 编辑

以下高亮部分是有区别的地方,可以发现,这些地方都没有栈的指针。
这些信息应该是gdb自己添加进去的。

#0  lowmem_shrink (s=<optimized out>, sc=0xec923c84) at drivers/staging/android/lowmemorykiller.c:89 */
#1 0xc00a0374 in do_shrinker_shrink (nr_to_scan=0, sc=0xec923d78, shrinker=0xc0518488 <lowmem_shrinker> at mm/vmscan.c:277
#2  shrink_slab (shrink=0xec923d78, shrink@entry=0xec923d70, nr_pages_scanned=1, lru_pages=3226603292, lru_pages@entry=52207) at mm/vmscan.c:326
#3  0xc00a3010 in do_try_to_free_pages (shrink=0xec923d70, sc=0xec923d78, zonelist=0xc0520830 <contig_page_data+2208> at mm/vmscan.c:2426
#4  try_to_free_pages (zonelist=zonelist@entry=0xc0520830 <contig_page_data+2208>, order=order@entry=64, gfp_mask=gfp_mask@entry=131290, nodemask=nodemask@entry=0x0)
    at mm/vmscan.c:2509

#5  0xc0097c24 in __alloc_pages_direct_reclaim (did_some_progress=<synthetic pointer>, migratetype=131290, preferred_zone=0x40, alloc_flags=2, nodemask=0x0,
    high_zoneidx=<optimized out>, zonelist=0xc0520830 <contig_page_data+2208>, order=0, gfp_mask=131290) at mm/page_alloc.c:2129
#6  __alloc_pages_slowpath (migratetype=131290, preferred_zone=0x1, nodemask=0x0, high_zoneidx=ZONE_MOVABLE, zonelist=0xc0520830 <contig_page_data+2208>, order=0, gfp_mask=131290)
    at mm/page_alloc.c:2351

#7  __alloc_pages_nodemask (gfp_mask=131290, order=order@entry=0, zonelist=0xc0520830 <contig_page_data+2208>, nodemask=nodemask@entry=0x0) at mm/page_alloc.c:2479
#8  0xc00b11a8 in __alloc_pages (zonelist=<optimized out>, order=0, gfp_mask=131290) at include/linux/gfp.h:302
#9  alloc_pages_node (order=0, gfp_mask=131290, nid=<optimized out> at include/linux/gfp.h:312
#10 __alloc_zeroed_user_highpage (vaddr=793632768, vma=0xecefd230, movableflags= at include/linux/highmem.h:192
#11 alloc_zeroed_user_highpage_movable (vaddr=793632768, vma=0xecefd230) at include/linux/highmem.h:214
#12 do_anonymous_page (flags=3221952572, pmd=0xecefd230, page_table=0xec1fc378, address=793632768, vma=0xecefd230, mm=0xec905c80) at mm/memory.c:3179
#13 handle_pte_fault (mm=mm@entry=0xec905c80, vma=vma@entry=0xecefd230, address=address@entry=793632768, pte=0xec1fc378, pmd=pmd@entry=0xec92cbd0, flags=flags@entry=41)
    at mm/memory.c:3484
#14 0xc00b183c in handle_mm_fault (mm=mm@entry=0xec905c80, vma=vma@entry=0xecefd230, address=address@entry=793632768, flags=flags@entry=41) at mm/memory.c:3598
#15 0xc0013c0c in __do_page_fault (tsk=0xec91c400, flags=41, fsr=2071, addr=793632768, mm=0xec905c80) at arch/arm/mm/fault.c:247
#16 do_page_fault (addr=793632768, fsr=2071, regs=0xec923fb0) at arch/arm/mm/fault.c:309
#17 0xc00083b0 in do_DataAbort (addr=793632768, fsr=2071, regs=0xec923fb0) at arch/arm/mm/fault.c:548
#18 0xc000dc74 in __dabt_usr () at arch/arm/kernel/entry-armv.S:410
作者: nswcfd    时间: 2015-10-12 19:20
估计inline和tail call(*)共同作用的结果。

(*)忘了具体的术语叫啥了,如果函数f1()的最后一条语句是函数调用(例如return f2()),
那么call f2可以用jmp f2来优化,其结果是在栈上没有f1的信息(在omit-frame-pointer的条件下)。
作者: nswcfd    时间: 2015-10-13 16:14
      -foptimize-sibling-calls
           Optimize sibling and tail recursive calls.

           Enabled at levels -O2, -O3, -Os.

作者: nswcfd    时间: 2015-10-13 16:22
本帖最后由 nswcfd 于 2015-10-13 16:25 编辑

回复 4# shihyu

方便给出gcc、gdb的版本信息,以及内核的具体编译选项么?(利用make V=1查看即可)
  1. [test]$ cat Makefile
  2. obj-m += aaa.o
  3. all:
  4.         make -C /path/to/kernel/source/root/ M=`pwd` V=1

  5. [test]$ cat aaa.c
  6. #include <linux/kernel.h>
  7. #include <linux/module.h>
  8. void myf(void) {}
  9. EXPORT_SYMBOL(myf);

  10. [test]$ make V=1
复制代码

作者: shihyu    时间: 2015-10-13 20:24
本帖最后由 shihyu 于 2015-10-13 20:25 编辑
nswcfd 发表于 2015-10-12 19:08
以下高亮部分是有区别的地方,可以发现,这些地方都没有栈的指针。
这些信息应该是gdb自己添加进去的。

...



请问怎么判断有没有栈的指针? 从代码看出来吗?


我是用 android emulator goldfish kernel 3.4
  1. CONFIG_EXPERIMENTAL=y
  2. CONFIG_SYSVIPC=y
  3. CONFIG_IKCONFIG=y
  4. CONFIG_IKCONFIG_PROC=y
  5. CONFIG_LOG_BUF_SHIFT=16
  6. CONFIG_CGROUPS=y
  7. CONFIG_CGROUP_DEBUG=y
  8. CONFIG_CGROUP_FREEZER=y
  9. CONFIG_CGROUP_CPUACCT=y
  10. CONFIG_RESOURCE_COUNTERS=y
  11. CONFIG_CGROUP_SCHED=y
  12. CONFIG_RT_GROUP_SCHED=y
  13. # CONFIG_UTS_NS is not set
  14. # CONFIG_IPC_NS is not set
  15. # CONFIG_USER_NS is not set
  16. # CONFIG_PID_NS is not set
  17. # CONFIG_NET_NS is not set
  18. CONFIG_BLK_DEV_INITRD=y
  19. CONFIG_CC_OPTIMIZE_FOR_SIZE=y
  20. CONFIG_SLAB=y
  21. # CONFIG_BLK_DEV_BSG is not set
  22. CONFIG_ARCH_GOLDFISH=y
  23. CONFIG_MACH_GOLDFISH=y
  24. CONFIG_NO_HZ=y
  25. CONFIG_HIGH_RES_TIMERS=y
  26. CONFIG_PREEMPT=y
  27. CONFIG_AEABI=y
  28. # CONFIG_OABI_COMPAT is not set
  29. CONFIG_ZBOOT_ROM_TEXT=0x0
  30. CONFIG_ZBOOT_ROM_BSS=0x0
  31. CONFIG_VFP=y
  32. # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
  33. CONFIG_BINFMT_MISC=y
  34. CONFIG_NET=y
  35. CONFIG_PACKET=y
  36. CONFIG_UNIX=y
  37. CONFIG_NET_KEY=y
  38. CONFIG_INET=y
  39. CONFIG_IP_MULTICAST=y
  40. CONFIG_IP_ADVANCED_ROUTER=y
  41. CONFIG_IP_MULTIPLE_TABLES=y
  42. CONFIG_IP_PNP=y
  43. CONFIG_IP_PNP_DHCP=y
  44. CONFIG_IP_PNP_BOOTP=y
  45. CONFIG_IP_MROUTE=y
  46. CONFIG_IP_PIMSM_V1=y
  47. CONFIG_IP_PIMSM_V2=y
  48. CONFIG_SYN_COOKIES=y
  49. CONFIG_INET_ESP=y
  50. # CONFIG_INET_XFRM_MODE_BEET is not set
  51. # CONFIG_INET_LRO is not set
  52. # CONFIG_INET_DIAG is not set
  53. CONFIG_IPV6_MULTIPLE_TABLES=y
  54. CONFIG_NETFILTER=y
  55. # CONFIG_BRIDGE_NETFILTER is not set
  56. CONFIG_NF_CONNTRACK=y
  57. CONFIG_NF_CONNTRACK_EVENTS=y
  58. CONFIG_NF_CT_PROTO_DCCP=y
  59. CONFIG_NF_CT_PROTO_SCTP=y
  60. CONFIG_NF_CT_PROTO_UDPLITE=y
  61. CONFIG_NF_CONNTRACK_AMANDA=y
  62. CONFIG_NF_CONNTRACK_FTP=y
  63. CONFIG_NF_CONNTRACK_H323=y
  64. CONFIG_NF_CONNTRACK_IRC=y
  65. CONFIG_NF_CONNTRACK_NETBIOS_NS=y
  66. CONFIG_NF_CONNTRACK_PPTP=y
  67. CONFIG_NF_CONNTRACK_SANE=y
  68. CONFIG_NF_CONNTRACK_TFTP=y
  69. CONFIG_NF_CT_NETLINK=y
  70. CONFIG_NETFILTER_TPROXY=y
  71. CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
  72. CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
  73. CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y
  74. CONFIG_NETFILTER_XT_TARGET_MARK=y
  75. CONFIG_NETFILTER_XT_TARGET_NFLOG=y
  76. CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
  77. CONFIG_NETFILTER_XT_TARGET_TPROXY=y
  78. CONFIG_NETFILTER_XT_TARGET_TRACE=y
  79. CONFIG_NETFILTER_XT_MATCH_COMMENT=y
  80. CONFIG_NETFILTER_XT_MATCH_CONNBYTES=y
  81. CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
  82. CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
  83. CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
  84. CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
  85. CONFIG_NETFILTER_XT_MATCH_HELPER=y
  86. CONFIG_NETFILTER_XT_MATCH_IPRANGE=y
  87. CONFIG_NETFILTER_XT_MATCH_LENGTH=y
  88. CONFIG_NETFILTER_XT_MATCH_LIMIT=y
  89. CONFIG_NETFILTER_XT_MATCH_MAC=y
  90. CONFIG_NETFILTER_XT_MATCH_MARK=y
  91. CONFIG_NETFILTER_XT_MATCH_POLICY=y
  92. CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
  93. CONFIG_NETFILTER_XT_MATCH_QTAGUID=y
  94. CONFIG_NETFILTER_XT_MATCH_QUOTA=y
  95. CONFIG_NETFILTER_XT_MATCH_QUOTA2=y
  96. CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG=y
  97. CONFIG_NETFILTER_XT_MATCH_SOCKET=y
  98. CONFIG_NETFILTER_XT_MATCH_STATE=y
  99. CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
  100. CONFIG_NETFILTER_XT_MATCH_STRING=y
  101. CONFIG_NETFILTER_XT_MATCH_TIME=y
  102. CONFIG_NETFILTER_XT_MATCH_U32=y
  103. CONFIG_NF_CONNTRACK_IPV4=y
  104. CONFIG_IP_NF_IPTABLES=y
  105. CONFIG_IP_NF_MATCH_AH=y
  106. CONFIG_IP_NF_MATCH_ECN=y
  107. CONFIG_IP_NF_MATCH_TTL=y
  108. CONFIG_IP_NF_FILTER=y
  109. CONFIG_IP_NF_TARGET_REJECT=y
  110. CONFIG_IP_NF_TARGET_REJECT_SKERR=y
  111. CONFIG_NF_NAT=y
  112. CONFIG_IP_NF_TARGET_MASQUERADE=y
  113. CONFIG_IP_NF_TARGET_NETMAP=y
  114. CONFIG_IP_NF_TARGET_REDIRECT=y
  115. CONFIG_IP_NF_MANGLE=y
  116. CONFIG_IP_NF_RAW=y
  117. CONFIG_IP_NF_ARPTABLES=y
  118. CONFIG_IP_NF_ARPFILTER=y
  119. CONFIG_IP_NF_ARP_MANGLE=y
  120. CONFIG_NF_CONNTRACK_IPV6=y
  121. CONFIG_IP6_NF_IPTABLES=y
  122. CONFIG_IP6_NF_FILTER=y
  123. CONFIG_IP6_NF_TARGET_REJECT=y
  124. CONFIG_IP6_NF_TARGET_REJECT_SKERR=y
  125. CONFIG_IP6_NF_MANGLE=y
  126. CONFIG_IP6_NF_RAW=y
  127. CONFIG_BRIDGE=y
  128. CONFIG_VLAN_8021Q=y
  129. CONFIG_CONNECTOR=y
  130. CONFIG_MTD=y
  131. CONFIG_MTD_CHAR=y
  132. CONFIG_MTD_BLOCK=y
  133. CONFIG_MTD_GOLDFISH_NAND=y
  134. CONFIG_BLK_DEV_LOOP=y
  135. CONFIG_BLK_DEV_NBD=y
  136. CONFIG_BLK_DEV_RAM=y
  137. CONFIG_BLK_DEV_RAM_SIZE=8192
  138. CONFIG_QEMU_PIPE=y
  139. CONFIG_QEMU_TRACE=y
  140. CONFIG_MD=y
  141. CONFIG_BLK_DEV_DM=y
  142. CONFIG_DM_DEBUG=y
  143. CONFIG_DM_CRYPT=y
  144. CONFIG_DM_UEVENT=y
  145. CONFIG_NETDEVICES=y
  146. CONFIG_TUN=y
  147. CONFIG_SMC91X=y
  148. CONFIG_INPUT_EVDEV=y
  149. CONFIG_KEYBOARD_GOLDFISH_EVENTS=y
  150. # CONFIG_INPUT_MOUSE is not set
  151. CONFIG_INPUT_MISC=y
  152. # CONFIG_SERIO_SERPORT is not set
  153. # CONFIG_LEGACY_PTYS is not set
  154. CONFIG_GOLDFISH_TTY=y
  155. CONFIG_POWER_SUPPLY=y
  156. CONFIG_BATTERY_GOLDFISH=y
  157. # CONFIG_HWMON is not set
  158. CONFIG_FB=y
  159. CONFIG_FB_MODE_HELPERS=y
  160. CONFIG_FB_TILEBLITTING=y
  161. CONFIG_FB_GOLDFISH=y
  162. CONFIG_MMC=y
  163. CONFIG_MMC_GOLDFISH=y
  164. CONFIG_RTC_CLASS=y
  165. CONFIG_RTC_DRV_GOLDFISH=y
  166. CONFIG_STAGING=y
  167. CONFIG_ANDROID=y
  168. CONFIG_ANDROID_BINDER_IPC=y
  169. CONFIG_ASHMEM=y
  170. CONFIG_ANDROID_LOGGER=y
  171. CONFIG_ANDROID_LOW_MEMORY_KILLER=y
  172. CONFIG_ANDROID_INTF_ALARM_DEV=y
  173. CONFIG_EXT4_FS=y
  174. CONFIG_EXT4_FS_SECURITY=y
  175. CONFIG_FUSE_FS=y
  176. CONFIG_MSDOS_FS=y
  177. CONFIG_VFAT_FS=y
  178. CONFIG_TMPFS=y
  179. CONFIG_YAFFS_FS=y
  180. CONFIG_NFSD=y
  181. CONFIG_NFSD_V3=y
  182. CONFIG_NLS_CODEPAGE_437=y
  183. CONFIG_NLS_ISO8859_1=y
  184. CONFIG_MAGIC_SYSRQ=y
  185. CONFIG_DEBUG_KERNEL=y
  186. CONFIG_SCHEDSTATS=y
  187. CONFIG_SCHED_TRACER=y
  188. CONFIG_BLK_DEV_IO_TRACE=y
  189. CONFIG_CRYPTO_ECB=y
  190. CONFIG_CRYPTO_PCBC=y
  191. CONFIG_CRYPTO_SHA256=y
  192. CONFIG_CRYPTO_AES=y
  193. CONFIG_CRYPTO_TWOFISH=y
  194. # CONFIG_CRYPTO_ANSI_CPRNG is not set
复制代码

作者: nswcfd    时间: 2015-10-14 12:10
不是,看bt的输出。注意7楼黄色行和蓝色行的区别。
#0  lowmem_shrink (s=<optimized out>, sc=0xec923c84) at drivers/staging/android/lowmemorykiller.c:89 */
#1 【0xc00a0374 in】 do_shrinker_shrink (nr_to_scan=0, sc=0xec923d78, shrinker=0xc0518488 <lowmem_shrinker> at mm/vmscan.c:277

lowmem_shrink前面没有0x.... in(【】里的部分),而do_shrink_shrink有。
lowmem_shrink没有出现在dump_stack里面。

PS1,只有配置文件的话,还是看不出来实际的gcc选项。能否参考10楼给出实际的gcc命令行?

PS2,kgdb的bt内容是命中某个breakpoint之后结果(比如这里在lowmem_shrink设置了断点),还是一步一步step in之后的结果(例如从do_page_falut设断点后命中,然后单步调试到lowmem_shrink)?







欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2