色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

電子發(fā)燒友網(wǎng)>嵌入式技術(shù)>嵌入式操作系統(tǒng)>另外的 C 編程工具 - Linux下C應(yīng)用程序開發(fā)

另外的 C 編程工具 - Linux下C應(yīng)用程序開發(fā)

  xxgdb?
  xxgdb 是 gdb 的一個(gè)基于 X Window 系統(tǒng)的圖形界面. xxgdb 包括了命令行版的 gdb 上的所有特性. xxgdb 使你能通過按按鈕來執(zhí)行常用的命令. 設(shè)置了斷點(diǎn)的地方也用圖形來顯示.
你能在一個(gè) Xterm 窗口里鍵入下面的命令來運(yùn)行它:
  xxgdb?
  你能用 gdb 里任何有效的命令行選項(xiàng)來初始化 xxgdb . 此外 xxgdb 也有一些特有的命令行選項(xiàng), 表 27.2 列出了這些選項(xiàng).
  表 27.2. xxgdb 命令行選項(xiàng).
  選 項(xiàng) 描 述?
  db_name 指定所用調(diào)試器的名字, 缺省是 gdb.?
  db_prompt 指定調(diào)試器提示符, 缺省為 gdb.?
  gdbinit 指定初始化 gdb 的命令文件的文件名, 缺省為 .gdbinit.
  nx 告訴 xxgdb 不執(zhí)行 .gdbinit 文件.?
  bigicon 使用大圖標(biāo).
  calls?
  你可以在 sunsite.unc.edu FTP 站點(diǎn)用下面的路徑:?
  /pub/Linux/devel/lang/c/calls.tar.Z?
  來取得 calls , 一些舊版本的 Linux CD-ROM 發(fā)行版里也附帶有. 因?yàn)樗且粋€(gè)有用的工具, 我們?cè)谶@里也介紹一下. 如果你覺得有用的話, 從 BBS, FTP, 或另一張CD-ROM 上弄一個(gè)拷貝. calls 調(diào)用 GCC 的預(yù)處理器來處理給出的源程序文件, 然后輸出這些文件的里的函數(shù)調(diào)用樹圖.
  注意: 在你的系統(tǒng)上安裝 calls , 以超級(jí)用戶身份登錄后執(zhí)行下面的步驟: 1. 解壓和 untar   文件. 2. cd 進(jìn)入 calls untar 后建立的子目錄. 3. 把名叫 calls 的文件移動(dòng)到 /usr/bin 目錄. 4. 把名叫 calls.1 的文件移動(dòng)到目錄 /usr/man/man1 . 5. 刪除 /tmp/calls 目錄. 這些步驟將把 calls 程序和它的指南頁(yè)安裝載你的系統(tǒng)上.
------------------------------------------------------------------------------?
--
  當(dāng) calls 打印出調(diào)用跟蹤結(jié)果時(shí), 它在函數(shù)后面用中括號(hào)給出了函數(shù)所在文件的文件名:
main [hello.c]?
  如果函數(shù)并不是向 calls 給出的文件里的, calls 不知道所調(diào)用的函數(shù)來自哪里, 則只顯示函數(shù)的名字:
  printf?
  calls 不對(duì)遞歸和靜態(tài)函數(shù)輸出. 遞歸函數(shù)顯示成下面的樣子:
  fact <<< recursive in factorial.c >;>;>;?
  靜態(tài)函數(shù)象這樣顯示:
  total [static in calculate.c]?
  作為一個(gè)例子, 假設(shè)用 calls 處理下面的程序:
  #include ;
  static void my_print (char *);?
  static void my_print2 (char *);
  main ()?
  {?
  char my_string[] = "hello world!";?
  my_print (my_string);?
  my_print2 (my_string);?
  my_print (my_string);?
  }
  void count_sum()?
  {?
  int i,sum=0;?
  for(i=0; i<1000000; i++)?
  sum += i;?
  }
  void my_print (char *string)?
  {?
  count_sum();?
  ("The string is %s ", string);?
  }
  void my_print2 (char *string)?
  {?
  char *string2;?
  int size, i,sum =0;
  printf ("The string printed backward is %s ", string2);?
  }?
  將產(chǎn)生如下的輸出:
  1 __underflow [hello.c]?
  2 main?
  3 my_print [hello.c]?
  4 count_sum [hello.c]?
  5 printf?
  6 my_print2 [hello.c]?
  7 count_sum?
  8 strlen?
  9 malloc?
  10 printf?
  calls 有很多命令行選項(xiàng)來設(shè)置不同的輸出格式, 有關(guān)這些選項(xiàng)的更多信息請(qǐng)參考 calls 的指南頁(yè). 方法是在命令行上鍵入 calls -h .
  calltree?
  calltree與calls類似,初了輸出函數(shù)調(diào)用樹圖外,還有其它詳細(xì)的信息。可以從sunsite.unc.edu FTP 站點(diǎn)用下面的路徑?
  :/pub/Linux/devel/lang/c/calltree.tar.gz得到calltree.
  cproto?
  cproto 讀入 C 源程序文件并自動(dòng)為每個(gè)函數(shù)產(chǎn)生原型申明. 用 cproto 可以在寫程序時(shí)為你節(jié)省大量用來定義函數(shù)原型的時(shí)間.?
  如果你讓 cproto 處理下面的代碼(cproto hello.c):
  #include ;
  static void my_print (char *);?
  static void my_print2 (char *);
  main ()?
  {?
  char my_string[] = "hello world!";?
  my_print (my_string);?
  my_print2 (my_string);?
  }
  void my_print (char *string)?
  {?
  printf ("The string is %s ", string);?
  }
  void my_print2 (char *string)?
  {?
  char *string2;?
  int size, i;
  size = strlen (string);?
  string2 = (char *) malloc (size + 1);?
  for (i = 0; i < size; i++)?
  string2[size -1 - i] = string;?
  string2[size] = '';
  printf ("The string printed backward is %s ", string2);?
  }?
  你將得到下面的輸出:
  /* hello.c */
  int main(void);
  int my_print(char *string);
  int my_print2(char *string);?
  這個(gè)輸出可以重定向到一個(gè)定義函數(shù)原型的包含文件里.
  indent?
  indent 實(shí)用程序是 Linux 里包含的另一個(gè)編程實(shí)用工具. 這個(gè)工具簡(jiǎn)單的說就為你的代碼產(chǎn)生美觀的縮進(jìn)的格式. indent 也有很多選項(xiàng)來指定如何格式化你的源代碼.這些選項(xiàng)的更多信息請(qǐng)看indent 的指南頁(yè), 在命令行上鍵入 indent -h .
  下面的例子是 indent 的缺省輸出:
  運(yùn)行 indent 以前的 C 代碼:
  #include ;
  static void my_print (char *);?
  static void my_print2 (char *);
  main ()?
  {?
  char my_string[] = "hello world!";?
  my_print (my_string);?
  my_print2 (my_string);?
  }
  void my_print (char *string)?
  {?
  printf ("The string is %s ", string);?
  }
  void my_print2 (char *string)?
  {?
  char *string2; int size, i;
  size = strlen (string);?
  string2 = (char *) malloc (size + 1);?
  for (i = 0; i < size; i++) string2[size -1 - i] = string;?
  string2[size] = '';
  printf ("The string printed backward is %s ", string2);?
  }?
  運(yùn)行 indent 后的 C 代碼:
  #include ;?
  static void my_print (char *);?
  static void my_print2 (char *);?
  main ()?
  {?
  char my_string[] = "hello world!";?
  my_print (my_string);?
  my_print2 (my_string);?
  }?
  void?
  my_print (char *string)?
  {?
  printf ("The string is %s ", string);?
  }?
  void?
  my_print2 (char *string)?
  {?
  char *string2;?
  int size, i;?
  size = strlen (string);?
  string2 = (char *) malloc (size + 1);?
  for (i = 0; i < size; i++)?
  string2[size - 1 - i] = string;?
  string2[size] = '';?
  printf ("The string printed backward is %s ", string2);?
  }?
  indent 并不改變代碼的實(shí)質(zhì)內(nèi)容, 而只是改變代碼的外觀. 使它變得更可讀, 這永遠(yuǎn)是一件好事.
  gprof?
  gprof 是安裝在你的 Linux 系統(tǒng)的 /usr/bin 目錄下的一個(gè)程序. 它使你能剖析你的程序從而知道程序的哪一個(gè)部分在執(zhí)行時(shí)最費(fèi)時(shí)間.
  gprof 將告訴你程序里每個(gè)函數(shù)被調(diào)用的次數(shù)和每個(gè)函數(shù)執(zhí)行時(shí)所占時(shí)間的百分比. 你如果想提高你的程序性能的話這些信息非常有用.
  為了在你的程序上使用 gprof, 你必須在編譯程序時(shí)加上 -pg 選項(xiàng). 這將使程序在每次執(zhí)行時(shí)產(chǎn)生一個(gè)叫 gmon.out 的文件. gprof 用這個(gè)文件產(chǎn)生剖析信息.
  在你運(yùn)行了你的程序并產(chǎn)生了 gmon.out 文件后你能用下面的命令獲得剖析信息:
  gprof ;?
  參數(shù) program_name 是產(chǎn)生 gmon.out 文件的程序的名字.
  為了說明問題,在程序中增加了函數(shù)count_sum()以消耗CPU時(shí)間,程序如下?
  #include ;
  static void my_print (char *);?
  static void my_print2 (char *);
  main ()?
  {?
  char my_string[] = "hello world!";?
  my_print (my_string);?
  my_print2 (my_string);?
  my_print (my_string);?
  }
  void count_sum()?
  {?
  int i,sum=0;?
  for(i=0; i<1000000; i++)?
  sum += i;?
  }
  void my_print (char *string)?
  {?
  count_sum();?
  printf ("The string is %s ", string);?
  }
  void my_print2 (char *string)?
  {?
  char *string2;?
  int size, i,sum =0;
  count_sum();?
  size = strlen (string);?
  string2 = (char *) malloc (size + 1);?
  for (i = 0; i < size; i++) string2[size -1 - i] = string;?
  string2[size] = '';?
  for(i=0; i<5000000; i++)?
  sum += i;
  printf ("The string printed backward is %s ", string2);?
  }?
  $ gcc -pg -o hello hello.c?
  $ ./hello?
  $ gprof hello | more?
  將產(chǎn)生以下的輸出?
  Flat profile:
  Each sample counts as 0.01 seconds.?
  % cumulative self self total?
  time seconds seconds calls us/call us/call name?
  69.23 0.09 0.09 1 90000.00 103333.33 my_print2?
  30.77 0.13 0.04 3 13333.33 13333.33 count_sum?
  0.00 0.13 0.00 2 0.00 13333.33 my_print
  % 執(zhí)行此函數(shù)所占用的時(shí)間占程序總?
  time 執(zhí)行時(shí)間的百分比
  cumulative 累計(jì)秒數(shù) 執(zhí)行此函數(shù)花費(fèi)的時(shí)間?
  seconds (包括此函數(shù)調(diào)用其它函數(shù)花費(fèi)的時(shí)間)
  self 執(zhí)行此函數(shù)花費(fèi)的時(shí)間?
  seconds (調(diào)用其它函數(shù)花費(fèi)的時(shí)間不計(jì)算在內(nèi))
  calls 調(diào)用次數(shù)
  self 每此執(zhí)行此函數(shù)花費(fèi)的微秒時(shí)間?
  us/call
  total 每此執(zhí)行此函數(shù)加上它調(diào)用其它函數(shù)?
  us/call 花費(fèi)的微秒時(shí)間
  name 函數(shù)名
  由以上數(shù)據(jù)可以看出,執(zhí)行my_print()函數(shù)本身沒花費(fèi)什么時(shí)間,但是它又調(diào)用了?
count_sum()函數(shù),所以累計(jì)秒數(shù)為0.13.
  技巧: gprof 產(chǎn)生的剖析數(shù)據(jù)很大, 如果你想檢查這些數(shù)據(jù)的話最好把輸出重定向到一個(gè)文件里.
上一頁(yè)123全文

本文導(dǎo)航

收藏0

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

評(píng)論

请按住滑块,拖动到最右边
了解新功能

查看更多

相關(guān)推薦

基于Linux的智能家居管理方案

物聯(lián)網(wǎng)的興起,為智能家居提供了條件。如何通過簡(jiǎn)化物聯(lián)網(wǎng)終端設(shè)備,最終開發(fā)出一套經(jīng)濟(jì)實(shí)用的支持多終端應(yīng)用的智能家居物聯(lián)網(wǎng)平臺(tái)是非常有意義、有價(jià)值的工作。本系統(tǒng)基于Linux操作系統(tǒng),開發(fā)了一套融合無線移動(dòng)網(wǎng)絡(luò)、射頻識(shí)別裝置的智能家居控制系統(tǒng)。##氣體流量的檢測(cè)##Linux的移植及Qt應(yīng)用程序開發(fā)
2014-06-19 10:12:305175

Linux設(shè)備驅(qū)動(dòng)程序與編寫應(yīng)用程序的本質(zhì)區(qū)別

Linux驅(qū)動(dòng)程序開發(fā)與應(yīng)用程序開發(fā)有很大的區(qū)別。
2018-03-31 08:18:2415978

Linux系統(tǒng)中搭建Qt Creator開發(fā)環(huán)境

Linux開發(fā)板中配置Qt運(yùn)行環(huán)境一文中介紹了如何將Qt移植到Linux開發(fā)板上,接下來就需要編寫Qt應(yīng)用程序,經(jīng)過交叉編譯后,Qt應(yīng)用程序后才能最終在開發(fā)板上運(yùn)行。本文將介紹Linux系統(tǒng)中Qt Creator的安裝以及如何表差編譯Qt應(yīng)用程序
2022-11-29 14:06:451706

使用GDB調(diào)試Linux應(yīng)用程序

本篇講解使用GDB調(diào)試Linux應(yīng)用程序,以下以 `hellowld.c` 為例介紹 GDB 的調(diào)試入門。
2023-06-27 15:48:57329

如何構(gòu)建linux開發(fā)環(huán)境和編譯軟件工程、應(yīng)用程序

前文介紹了如何使用官方提供的鏡像文件啟動(dòng)開發(fā)板,本文將說明如何構(gòu)建linux開發(fā)環(huán)境和編譯軟件工程、應(yīng)用程序
2024-01-03 12:31:23411

玩轉(zhuǎn)賽靈思Zedboard開發(fā)板(6):如何在Zedboard上運(yùn)行linux下的應(yīng)用程序

電子發(fā)燒友網(wǎng)編輯現(xiàn)為讀者整合《玩轉(zhuǎn)賽靈思Zedboard開發(fā)板》系列文章, 其中包括在ZedBoard開發(fā)板上的一些應(yīng)用實(shí)例。本文主要講述Zedboard上的嵌入式linux應(yīng)用,包括使用SDK設(shè)計(jì)最簡(jiǎn)單的linux應(yīng)用程序linux交叉編譯環(huán)境搭建、設(shè)備驅(qū)動(dòng)編寫等內(nèi)容...
2013-01-24 13:38:1816892

4418開發(fā)板基于Linux-c測(cè)試程序的編譯和運(yùn)行

基于iTOP4418開發(fā)板的Linux-c的測(cè)試程序iTOP-4418 開發(fā)板可以運(yùn)行的文件系統(tǒng)很多,在具體的文件系統(tǒng)上實(shí)現(xiàn)特定功能前,可以使用 Linux-c 程序來測(cè)試硬件以及驅(qū)動(dòng)。而且這些程序
2019-12-04 11:03:31

LINUX如何編譯并運(yùn)行C程序

LINUX如何編譯并運(yùn)行C程序
2020-12-25 06:12:24

Linux應(yīng)用程序開發(fā)_基礎(chǔ)知識(shí)

Linux應(yīng)用程序開發(fā)_基礎(chǔ)知識(shí)
2012-08-16 16:32:21

Linux應(yīng)用程序C ++庫(kù)在哪里

應(yīng)用程序示例,因此我復(fù)制了C示例項(xiàng)目(就像我之前幾次),但是這次將main.c文件重命名為main.cpp。一切編譯正常。然后我添加了#include ,構(gòu)建中斷了。配置的構(gòu)建項(xiàng)目helloCpp
2022-08-31 14:50:47

linux應(yīng)用程序開發(fā)linux系統(tǒng)移植

1.linux基礎(chǔ)+c語言 2.linux應(yīng)用程序開發(fā)(系統(tǒng)編程,網(wǎng)絡(luò)編程) 3.ARM編程(ARM體系結(jié)構(gòu),ARM匯編,開發(fā)板常見外設(shè)邏輯編程) 4.linux系統(tǒng)移植(uboot移植
2021-12-20 08:19:12

linux應(yīng)用程序開發(fā)詳解。非常適合新手,講的真的很好,在...

一本有關(guān)linux應(yīng)用程序開發(fā)詳解。非常適合新手,講的真的很好,在這里分享給大家
2014-08-27 16:48:18

正在加载...

主站蜘蛛池模板: 亚洲国产精品99久久久久久 | 亚洲伊人久久大香线蕉综合图片 | 小骚妇BBBXXX | 99视频国产在线 | 99re6久久热在线播放 | 国产99RE在线观看69热 | 99国产精品人妻无码免费 | 99精品视频在线 | 超h高h肉h文教室生理课 | 怡红院美国分院一区二区 | 99精品视频在线观看免费 | 91精品在线国产 | 男生插女生下体 | 日日久久狠狠8888偷偷色 | 国产人妻人伦精品熟女麻豆 | 正在播放黑人杂交派对卧槽 | 国产精品99AV在线观看 | 麻豆精品2021最新 | 暖暖日本 在线 高清 | 少妇高潮A片特黄久久精品网 | 全免费午夜一级毛片 | 娇妻归来在线观看免费完整版电影 | 成人天堂资源WWW在线 | 国产亚洲精品成人AV久久 | 日韩精品无码免费专区 | 中国欧美日韩一区二区三区 | a4you销魂gogo人体 | 国产精品一国产精品免费 | 国产成人精品免费视频下载 | 男生互捏jiji的故事 | 亚洲AV综合99一二三四区 | 小777论坛| 亚洲乱码一区二区三区香蕉 | 久久久GOGO无码啪啪艺术 | 女人爽到高潮嗷嗷叫视频 | 乐乐亚洲精品综合影院 | 公粗挺进了我的密道在线播放贝壳 | 5566av资源 | 免费在线伦理片 | 男人女人边摸边吃奶边做 | 老师你下面好紧夹死了 |