Domanda

I wonder if there is a way to know the memory footprint of my binary executable coded in C language.

informations about binary executable : compiled with toolchain of OpenWrt branch (Attitude Adjustment) and its architecture is x86

È stato utile?

Soluzione

On a Linux/Unix system, you can use the size command for this, e.g. on my Ubuntu system

size /bin/sh
   text    data     bss     dec     hex filename
 102134    1776   11272  115182   1c1ee /bin/sh

Since this is OpenWrt, if you have a different architecture, e.g. MIPS or ARM or something else, you must pick the size command of the appropriate toolchain, of course.

The sections have the following meaning

  • text denotes the code size of the executable
  • data is initialized data section, e.g. variables, like int v = 17; or char name[] = "Tom";
  • bss is the uninitialized or simply 0 initiailized section, int a; or double amount;
  • dec is the overall size, in this case 102134 + 1776 + 11272 = 115182
  • hex finally is also the overall size, as a hex value 1c1ee = 115182

But this does not include the stack or any dynamic heap memory. To see the overall memory usage at runtime, you must look at ps or top output.

Altri suggerimenti

To understand your memory usage during runtime, on a Linux system you can use valgrind's memcheck tool.

Use the Command size <binary> to get the memory footprint of your binary executable. Check the size manual (man size) for more information.

top

and advanced one called

htop

are the tools to monitor any executable runing in linux system

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top