原创 一例由於棧溢出導致valgrind報告Invalid write的錯誤

使用Valgrind檢查新寫好的代碼,在調用函數a時,valgrind報告了一系列的Invalid write和Invalid read,警告所在行數就是函數a的定義位置,讓人摸不着頭腦。而且也不是每次調用a都會告警。 不經意間發現在In

原创 VNC登錄linux後桌面不顯示圖標故障解決方法

由於上一次vnc操作中註銷了桌面導致的。 在shell中依次執行以下命令 1、vncserver -kill :1 2、rm -f .vnc/* 3、vncserver

原创 高效獲得Linux函數調用棧/backtrace的方法

有四種方法可以獲得Linux的函數調用堆棧,參見CALL STACK TRACE GENERATION。 在這裏簡單羅列一下文中提到的四個方案: 方法1 GCC內置函數__builtin_return_address 方法2 Glibc中

原创 如何分析Linux版本升級後的資源開銷增加原因?

         起因一個運行十餘年的Linux平臺應用,最近要從原來的RHEL 5.4(2.6.18)升級到RHEL6.4(2.6.32),以便適應超過32核CPU。在重新編譯運行後發現,應用CPU開銷從原來的150%增加到500%。通

原创 CALL STACK TRACE GENERATION

原文發表在http://www.acsu.buffalo.edu/~charngda/backtrace.html(鏈接已失效),轉載自http://cdunn2001.blogspot.com/2012_05_01_archive.ht

原创 C語言printf詳解

本文轉載自http://www.cppblog.com/zenliang/archive/2010/11/07/132858.html   C中格式字符串printf()的一般形式爲: %[標誌][輸出最小寬度][.精度][長度]類型,

原创 如何獲得動態鏈接庫函數被調用時獲得自己存儲路徑

dlopen動態鏈接庫a.so,a.so中有一個函數int b()想獲得a.so的存儲路徑怎麼辦? 用dladdr,輸入函數指針就能得到各種信息。 參考:http://stackoverflow.com/questions/1681060

原创 Dwarf Error: wrong version in compilation unit header (is 4, should be 2)

  在gcc4.1.2,gdb6.5的環境下竟然出現了這個錯誤,非常不可思議,因爲這兩個版本的gcc和gdb是匹配的. 嘗試按照下面這個方法重新編譯也不行。 http://blog.csdn.net/fandroid/article/de

原创 使用iconv進行GBK到BIG5編碼轉/簡繁轉換遇到的問題

Linux操作系統中的iconv命令/函數可以將一種已知的字符集文件轉換成另一種已知的字符集文件。 在使用它進行GBK到BIG5的編碼轉換時,遇到"iconv:illeagal input sequence at positon xx ”

原创 Thinkpad x1“電源已接通,未充電”解決辦法

現象 Windows電池管理提示:“電源已接通,未充電” 或 “plugged in but not charging”。 修改電源管理計劃無效,重啓無效。 解決辦法 拔掉電源 重啓進入BIOS 進入 Power menu 選擇 “

原创 解決windows 10更換非系統盤後無法啓動問題

現象 筆記本電腦裏有兩塊SSD硬盤,Disk 1是系統盤,安裝了windows 10,Disk 1是數據盤,要將3爲替換爲更大容量的物理盤c。 Disk 2更換爲Disk 3後,BIOS停留在Boot Menu,列出了Disk 1、3

原创 網頁和URL內非英語字符的編碼方法

HTML和URL中對於ASCII碼中大於0x7f的字符需要進行編碼,主要有”\u”和“&#”兩種前綴編碼方式,其後跟的字符都是unicode編碼。 《Unicode Escape Formats》中對各中編碼進行了介紹,比較全面 ht

原创 在應用程序中替換Linux中Glibc的malloc的四種方法

  2015-12-22更新方法三在dlopen RTLD_DEEPBIND情況下的侷限。          打算優化系統的內存分配,接管glibc提供的內存管理,但是整個工程的代碼量很大,使用malloc、realloc、calloc和

原创 【StatsD監控】基於Telegraf+InfluxDB+grafana展示(非Docker方案)

2018-7-10 更新配置Influxdb的數據保留策略 StatsD是一個簡單易用的監控方案,簡書上的這篇文章的介紹比較清晰。由於Statsd採用了文本+UDP傳輸數據,所以對C/C++開發者比較友好。本文介紹了部署Telegraf

原创 沒有atomic.h後如何在linux實現原子操作

2017-04-22更新 GCC 4.7 開始支持C++11的內存一致性模型,提供了__atomic**系列函數,可以替代原有的__sync**系列。 在訪存行爲上,更爲清晰,推薦使用。 2011-09-06更新 需要使用atomic_a