English 中文(简体)
GDB 变现价值协会 在使用信息变数和打印机时
原标题:Variable Value Inconsistency in GDB When Using info variables and print Commands
  • 时间:2024-04-09 06:01:31
  •  标签:
  • c
  • gdb

在同一个过程中,当与亚洲开发银行脱钩并检查可变的颗粒物_客户_handle_msg时,我首先使用了电变数指令,然后印刷其价值,获得正常价值:

#gdb attach 100
(gdb) info variables grpc_client_handle_msg
All variables matching regular expression "grpc_client_handle_msg":
File lib/grpc.c:
21:    P_GRPC_CLIENT_HANDLE_MSG *grpc_client_handle_msg;
Non-debugging symbols:
0x000000000096c698  grpc_client_handle_msg
(gdb) p grpc_client_handle_msg
$1 = (P_GRPC_CLIENT_HANDLE_MSG *) 0x773c000
(gdb)

然而,当我首次印刷信息,然后使用信息变数指令时,价值为0x0:

#gdb attach 100
(gdb) p grpc_client_handle_msg
$1 = (P_GRPC_CLIENT_HANDLE_MSG *) 0x0
(gdb) info variables grpc_client_handle_msg
All variables matching regular expression "grpc_client_handle_msg":
File lib/grpc.c:
21:    P_GRPC_CLIENT_HANDLE_MSG *grpc_client_handle_msg;
(gdb) p grpc_client_handle_msg
$2 = (P_GRPC_CLIENT_HANDLE_MSG *) 0x0
(gdb)

During these two operations, there was no intentional modification to the value.

I try 10 times, when used info variables first, the variable value is always 0x773c000, and when used print first, the variable value is always 0x0. The variable is init and not change it again.

问题回答

@sbssa

Yes, they are two different variables, I print the address of variables. When I info variables first, the address is

(gdb) p &grpc_client_handle_msg
$2 = (P_GRPC_CLIENT_HANDLE_MSG **) 0x96c698 <grpc_client_handle_msg>

但是,在第一次印刷时,地址是:

(gdb)p &grpc_client_handle_msg
$2 = (P_GRPC_CLIENT_HANDLE_MSG **) 0x7fd42e28af98 <grpc_client_handle_msg>

但为什么? 我只是“从P_GRPC_CLIENT_HANDLE_MSG *grpc_client_handle_msg;”没有重新定义?





相关问题
Fastest method for running a binary search on a file in C?

For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Tips for debugging a made-for-linux application on windows?

I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

Good, free, easy-to-use C graphics libraries? [closed]

I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...

Encoding, decoding an integer to a char array

Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...

热门标签