如何检查参数在 GDB 中是如何传递的?
How to check how arguments are passed in GDB?
调用约定很复杂,有时我在GDB中调试程序时想知道参数是如何传递的。
例如,当我这样使用call
指令时:
call nicefun(7)
我希望 GDB 给我写这样的东西:
I put 7 in rdi.
有这样的选择吗?当然,检查 7 是如何传递的很容易,但是对于大型结构、va_list 等,事情会变得复杂...
Is there such an option?
没有
I would like to know how the arguments are passed.
如果您在汇编级别调试,没有其他方法可以替代熟悉您平台的调用约定。
如果您大致熟悉它们,但忘记了一些细节并需要快速提醒,x/20i target_function
通常会提供足够的提示。
调用约定很复杂,有时我在GDB中调试程序时想知道参数是如何传递的。
例如,当我这样使用call
指令时:
call nicefun(7)
我希望 GDB 给我写这样的东西:
I put 7 in rdi.
有这样的选择吗?当然,检查 7 是如何传递的很容易,但是对于大型结构、va_list 等,事情会变得复杂...
Is there such an option?
没有
I would like to know how the arguments are passed.
如果您在汇编级别调试,没有其他方法可以替代熟悉您平台的调用约定。
如果您大致熟悉它们,但忘记了一些细节并需要快速提醒,x/20i target_function
通常会提供足够的提示。