如何检查参数在 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 通常会提供足够的提示。