how to know the memory footprint of my binary executable

↘锁芯ラ 提交于 2019-12-10 14:54:16

问题


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


回答1:


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.




回答2:


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




回答3:


top

and advanced one called

htop

are the tools to monitor any executable runing in linux system




回答4:


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



来源:https://stackoverflow.com/questions/22478014/how-to-know-the-memory-footprint-of-my-binary-executable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!