简体   繁体   中英

GDB doesn't step into a function when use command “s”

I have a problem with GDB. When I use "s" to step into a function called from the main function, GDB jumps to another function without showing me the function that I need.

To be clear, I use step here:

In file main.c :

short c = get(a, b);

Now get has a 36 lines code and at line 27 it calls an other function "swap" here:

In file get.s :

call _swap;

When I use step (s) with GDB on "get", it jumps all of the get function and it shows me the _swap function. These are three different files: main.c , get.s , and *swap.c compiled in this way:

gcc -g -m32 main.c swap.c get.s -o IA-main

-m32 because get.s is IA-32 assembly. Why does it jump the "get" function and show me only "_swap"?

I work on Mac OS X v10.12.6 (Sierra), so GDB is a little annoying.

From Continuing and Stepping (emphasis mine)

step

Continue running your program until control reaches a different source line, then stop it and return control to GDB. This command is abbreviated s.

Warning: If you use the step command while control is within a function that was compiled without debugging information, execution proceeds until control reaches a function that does have debugging information. Likewise, it will not step into a function which is compiled without debugging information. To step through functions without debugging information, use the stepi command , described below.

You can use the stepi command instead:

stepi

stepi arg

si

Execute one machine instruction, then stop and return to the debugger.

It is often useful to do 'display/i $pc' when stepping by machine instructions. This makes GDB automatically display the next instruction to be executed, each time your program stops. See Automatic Display.

An argument is a repeat count, as in step.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM