2012-03-06 38 views
0

是否有人可以帮我这个堆栈跟踪的interpreatation:应用程序堆栈跟踪解释MDB

 Loading modules: [ libumem.so.1 libc.so.1 libuutil.so.1 ld.so.1 ] 
     > $c 
     libc.so.1`strlen+0xc(80b37ba, fe679d2c, fe679d00, 0) 
     libc.so.1`snprintf+0x74(fe67d970, 1388, 80b37b8, efef9f68, 80b379d, fe679e30) 
     > 80b37ba::whatis 
     80b37ba is unknown 
     > fe679d2c::whatis 
     fe679d2c is unknown 
     > fe679d00::whatis 
     fe679d00 is unknown 

strlen函数得到一个说法,但是在这个堆栈跟踪我看到3个地址?他们的含义是什么?

关于

回答

1

调试器无法解释它的大部分内容。

调试器可能不知道的功能多少参数得到。所以它打印更多。但是你可以忽略额外的参数。

确实有意义的零件显示snprintf被调用,然后调用strlen。这可能是由于格式字符串中的%sstrlen参数相似(不完全相同,我不知道为什么),以snprintf的第三个参数。
所以可能是一些代码做类似snprintf("%d %s\n", number, string)
你可以在fe67d970找到实际的格式字符串,它可能会让你识别谁叫它(除非你在任何地方使用相同的格式字符串)。