07-17-2013
Knowing the size and location of variables in a C program
So I need some help with this. Pardon me if I'm posting in the wrong forum, after some googling for my answer and finding nothing I found this forum. It seemed appropriate for what I was seeking. I just didnt find a forum that concerned the use of GDB. I'm learning to use the C language and GDB. What I don't understand is how the computer knows how big each piece of a program is in memory, and how I could find my variable's in memory using GDB.
For example how does the computer know that the disassembled instructions from main() are <main+##>? Is there a flag between each variable in memory on the stack? Or does the CPU reference the text segment with the variable in memory to know where a variable begins and ends?
I mean if all memory is numbered how can anyone including the CPU know where a word or giant or w/e starts and ends?
If I wanted to find my variable in memory after setting a break point in it and accessing the $esp register how would I know where my variables began and ended?
When I use the examine command "x" I don't know how to know where my variable begins and ends. Would it be the $ESP register on the stack minus the word size of my variable? $EIP shows how many bytes from main and the previous instruction when you disassemble something but everything on the stack is just numbers.
Any help would be much appreciated!
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
Hi,
Wish if could provide some clues.
How do I dump all the C program variables(global) into say a file with their names and the values. So that when I restart the application again I could use this same file for reinitializing.Is this possible?
Thanks,
Reji (1 Reply)
Discussion started by: rejise
1 Replies
2. Programming
Is there a way to find the address of stack memory writing a program? Please guide me (12 Replies)
Discussion started by: jacques83
12 Replies
3. Solaris
hey everybody,
i am currently working on solaris 10 os on a m5000 server. my problem is when i want the exact size of a program in execution, i am unable to do it. earlier i thought the RSS field of prstat but because of its large size it cant be the size. pmap -x shows some output but it includes... (2 Replies)
Discussion started by: aryansheikh
2 Replies
4. Shell Programming and Scripting
Hello everyone,
I am trying to figure out where all of my environment variables are getting set.
When I type env I get a whole list of them, about two pages full, yet I do not seem to find where they are initialized.
I checked all of my .profile .login and .cshrc files (I do not seem to have any... (1 Reply)
Discussion started by: gio001
1 Replies
5. UNIX for Dummies Questions & Answers
Hello Geniuses of the unix world. please help, stupid chemist. I have the following script that I need to create a file. Doesnt make sense unless i explain this way: I need to create a file called summary.in I would like all these lines to be inserted however in the command line I would like the... (1 Reply)
Discussion started by: gingburg
1 Replies
6. UNIX for Dummies Questions & Answers
Hello all,
one of application on system requires that "uname" program is in "/usr/uname" location. I can find uname in "/usr/bin/uname" location. Is it possible to present the /usr/bin/uname as that it was located in /usr/uname location?
Thank you in advanced,
M (1 Reply)
Discussion started by: kreno
1 Replies
7. UNIX for Dummies Questions & Answers
this method is not working.I am having a problem to use variables in system command. i cannot use the variables in system command.
this how i was did
system("whereis command");
this method works very fine. but, i want use the commands as variable.
that means i want only pass the variables.... (6 Replies)
Discussion started by: dhanda2601
6 Replies
8. UNIX for Dummies Questions & Answers
so i was testing something on a test box running linux. i manually vi'ed the /var/log/messages file. and i noticed, the file immediately stopped being updated.
it wasn't until i restarted the syslog process that events started being recorded in it again.
so that tells me, the syslog process... (20 Replies)
Discussion started by: SkySmart
20 Replies
9. Programming
Hello,
Here is a portion of my code:
a=(int *) malloc(dim*dim*sizeof(int));
b=(int *) malloc(dim*dim*sizeof(int));
c=(int *) malloc(dim*dim*sizeof(int));
for(i=0;i<dim;i++)
for(j=0;j<dim;j++)
c= rand();
for(i=0;i<dim;i++)
for(j=0;j<dim;j++)
b=rand();
... (6 Replies)
Discussion started by: chercheur111
6 Replies
10. Shell Programming and Scripting
This question could be specific to the site subdivx.com In the past, I've been able to download a file following location using cURL but there is something about subdivx.com that's different and can't figure out how to get it to work.
I tried the following directly in the terminal with no... (5 Replies)
Discussion started by: MoonD
5 Replies
LEARN ABOUT HPUX
pthread_default_rsestacksize_np
pthread_default_rsestacksize_np(3T) pthread_default_rsestacksize_np(3T)
NAME
pthread_default_rsestacksize_np() - change the default stacksize.
SYNOPSIS
PARAMETERS
new_size The new default register stack size.
old_size Pointer to where the old default register stack size is returned.
DESCRIPTION
The function allows an application to change the default value for the rsestacksize attribute. This function must be called before any
threads have been created. The new default stack size is passed in the new_size parameter. If not NULL, the previous default stack size
is returned in old_size. If new_size is zero, this function can be used (at any time) to query the current default stack size.
On HP-UX, threads with default stack sizes are cached after they terminate. The next time a thread is created with a default stack size, a
cached thread (and its stack) are reused. This can result in significant performance improvements for
However, if the default register stack size is not appropriate for an application, it cannot take advantage of this performance enhance-
ment. By using the function, the threads library will change the default stack size so that it matches the applications needs. This
allows the application to utilize the performance benefit of cached threads. If either of the set register stack size APIs is called the
register stack portion of the stack space will be that large instead of size determined by the implementation. The memory stack portion
will be the remainder.
RETURN VALUE
Upon successful completion, returns zero. Otherwise, an error number is returned to indicate the error (the variable is not set).
ERRORS
If any of the following occur, the function returns the corresponding error number:
The value specified by
new_size is less than register stack required for a thread.
The calling process has already created threads (this must be called
before any threads are created).
AUTHOR
was developed by HP.
SEE ALSO
pthread_attr_getstacksize(3T), pthread_attr_setstacksize(3T), pthread_default_stacksize_np(3T).
STANDARDS CONFORMANCE
Pthread Library pthread_default_rsestacksize_np(3T)