簡體   English   中英

ltrace()如何顯示rand()

[英]How does ltrace() display rand()

當ltrace命中一個rand函數時,它將顯示4個參數,如下所示:rand(0,0x5649bd4e6010,0x7f0955490760,0x7f09551cf7b0)= 0x17382962

蘭德不接受任何論點。 ltrace在這里顯示什么?

編輯添加示例:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    srand((unsigned int)time(NULL));
    int r = (rand() % 4096);
    printf("The number is: %d\n", r);
} 

編譯並使用ltrace運行:

$ ltrace ./demo 
__libc_start_main(0x4005f6, 1, 0x7ffe1e719fa8, 0x400650 <unfinished ...>
time(0)                                                                                                      = 1515331941
srand(0x5a522165, 0x7ffe1e719fa8, 0x7ffe1e719fb8, 0)                                                         = 0
rand(0x7f75b1a4b620, 0x7ffe1e719e7c, 0x7f75b1a4b0a4, 0x7f75b1a4b11c)                                         = 0x354b8023
printf("The number is: %d\n", 35The number is: 35
)                                                                            = 18
+++ exited (status 0) +++

$ ltrace ./demo 
__libc_start_main(0x4005f6, 1, 0x7fffa0bf3a18, 0x400650 <unfinished ...>
time(0)                                                                                                      = 1515331963
srand(0x5a52217b, 0x7fffa0bf3a18, 0x7fffa0bf3a28, 0)                                                         = 0
rand(0x7f6e22884620, 0x7fffa0bf38ec, 0x7f6e228840a4, 0x7f6e2288411c)                                         = 0x6667c0f4
printf("The number is: %d\n", 244The number is: 244
)                                                                           = 19
+++ exited (status 0) +++

rand顯示的參數是什么?

rand(0x7f6e22884620, 0x7fffa0bf38ec, 0x7f6e228840a4, 0x7f6e2288411c)                                         = 0x6667c0f4

什么是0x7f6e22884620、0x7fffa0bf38ec,0x7f6e228840a4、0x7f6e2288411c?

根據x86-64 ABI約定, ltrace顯示了傳遞參數的少數寄存器的內容。

對於其他功能, ltrace知道其API(即其簽名),因此可以更巧妙地顯示參數。

請參見ltrace(1)和“ 原型庫發現”部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM