锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 璋冭瘯妯″紡 杞偍鏂囦歡璋冭瘯 浜や簰璋冭瘯 璋冭瘯鏂拌繘紼?br/>
gdb exe 璋冭瘯宸茬粡榪愯鐨勮繘紼?br/>
gdb –pid= 榪涚▼鍙?/p> 鍐呮牳璋冭瘯 gdb exe . gdb –args exe [args] . gdb . gdb –args gcc a.c -o a show args set args 澶氭榪愯璁劇疆鍛戒護(hù)琛屽弬鏁?/p>
path directory . show paths . show environment [varname] . set environment varname[=value] 娓呴櫎鎴栬呰緗幆澧冨彉閲?/p>
緇ф壙榪涘叆gdb宸ヤ綔鐩綍 鏀瑰彉宸ヤ綔鐩綍 cd dirctory 鏄劇ず璺緞 pwd info terminal 榪滅▼璋冭瘯鍙敤榪欎簺杈呭姪銆?/p>
inferior gdb緇存姢鐨勪竴緋誨垪瀵硅薄錛屾瘡涓猧nf瀵瑰簲涓涓皟璇曠洰鏍囪繘紼嬨?/p>
info inferior 鏄劇ず涓嬪眰淇℃伅 (gdb) info inferiors 鍒囨崲涓嬬▼ inferior 2 鍒囨崲2榪欎釜涓嬬▼銆?br/>
榪涚▼鍙鋒槸0錛屾病寮濮嬭繍琛屻?br/>
run 榪愯璧鋒潵銆?/p>
. 澧炲姞涓涓繍琛屼笅灞?/p>
add-inferior -exec executeable 澧炲姞涓涓繍琛屼笅灞?br/>
姣斿璇磋皟璇曚竴涓湇鍔$紼嬪簭錛屼竴涓鎴風(fēng)紼嬪簭銆?/p>
remove-inferior n 鍒犳帀涓涓笅灞?br/>
detach inferior 緇х畫榪愯 quit (gdb) remove- file a.exe 鍙嚜琛屾枃浠跺拰絎﹀彿鏂囦歡鏄竴涓枃浠?/p>
鍙嚜琛屾枃浠跺拰絎﹀彿鏂囦歡鍒嗗紑 exec-file 鎸囧畾鐩爣鏂囦歡 . symbol-file 鎸囧畾絎﹀彿鏂囦歡 run 寮濮嬭繍琛? set args 娓呯悊鍛戒護(hù)琛屽弬鏁?/p>
gdb –pid= pid attach pid detach pid 鍒嗙榪涚▼緇х畫榪愯 . quit 榪涚▼閫鍑?/p>
. q 鏂偣 break 鏅? linespec 鏍囧彿 explicit -line number 瀹炶返 file banner 铏氭嫙鏈鴻瀹氱‖浠舵柇鐐逛細(xì)澶辮觸. (gdb) hbreak v info b 鏄劇ず鏂偣 watchpoint 鐩戣涓涓〃杈懼紡錛屽煎彉鍖栦腑鏂?/p>
watch a錛奲錛媍錛廳 watch fd 鐩戞帶灞閮ㄥ彉閲廸d 璁塊棶鐩戣鐐?br/>
rwatch 璇誨仠涓嬫潵銆? b hd_ioctl thread 1 綣佸繖鍑芥暟瑙e喅鏂規(guī) b hd_ioctl thread 1 if fd > 0 褰撴柇鐐癸紝鏂簡鍚庢墽琛屽懡浠?br/>
()command 12 鍔ㄦ乸ing涓嶄慨鏀逛唬鐮併?/p>
tracepoint 榪滅▼涓繪満閫氳璋冭瘯錛屽墠绔痵tub绔嬪埢鎭㈠鎵ц錛屼絾浼?xì)璁板綍涓嬫潵銆?/p>
catchpoint 榪涘叆瀛愬嚱鏁板唴閮ㄣ傚崟姝?step 姹囩紪 stepi stepi 4 涓嶈榪涘叆瀛愬嚱鏁? next 緇х畫鎵ц continue 璺戣搗鏉ョ洿鍒?鍙鋒柇鐐瑰懡涓?/p>
until 3 鎭㈠鎵ц鐩村埌鍑芥暟榪斿洖銆?/p>
finish gdb 鏉滄挵浠g爜璋冪敤鍑芥暟銆?br/>
call sum錛?錛?錛?… 寮哄埗main鍑芥暟 return銆?br/>
return 1 寮傚父鎴栨柇鐐硅繘鍏ヨ皟璇曞櫒銆?br/>
璋冭瘯鍣ㄥ彂璧蜂腑鏂紝璁╃▼搴忎腑鏂笅鏉ャ俢trl錛婥錛宎pp鏀跺埌涓柇淇″彿錛岃繘鍏ヨ皟璇曞櫒銆?/p>
璋冭瘯鍣ㄨ鍖?璋冭瘯絎﹀彿銆?/p>
浜岃繘鍒訛紞璋冭瘯絎﹀彿錛嶆簮鐮?/p>
linux dwarf 瀛樺偍璋冭瘯絎﹀彿淇℃伅銆俫cc readelf -h filename readelf -w 瀵煎嚭璋冭瘯鏂囦歡 gcc -g 鎵嶈兘杈撳嚭絎﹀彿 ubuntu 絎﹀彿鏈嶅姟鍣? 瀹夎ubunte鐨刲inux 鍐呮牳絎﹀彿 瀹夎libc絎﹀彿 dpkg -s /lib/x86_64-linux-gun/libc-2.15.so libc 璋冭瘯絎﹀彿 sudo apt-get install libc6-dbg 絎﹀彿璺緞 gdb 浣跨敤file 鎴?symbol錛峟ile 鍔犺澆絎﹀彿鏂囦歡 錛坓db錛塱 share 鎼滅儲(chǔ)絎﹀彿 info addriess 鍑芥暟鍚?/p>
info symbol 鍦板潃 (gdb) info address main . info os 鏌ョ湅鍔犺澆鐨勬枃浠跺唴瀛樹綅緗?/p>
info files 鍒楀嚭鍏ㄥ眬鍙橀噺 info variable list 甯哥敤鍛戒護(hù)婧愮爜 瀹夎緋葷粺宸ュ叿婧愮爜鍜岃皟璇?/p>
apt-get source coreutils libc sudo apt-get source libc6-dev dir 鎼滅儲(chǔ)璺緞 錛氬垎鍓?br/>
$cdir 緙栬瘧璺緞 瑙傚療瀵勫瓨鍣?br/>
info reg 鏍?br/>
瀛愬嚱鏁拌繑鍥炲湴鍧 bt n 瑙傚療鍑芥暟榪斿洖鍦板潃 娉ㄦ剰錛屽垏鎹㈡爤甯т箣鍚庡彲鑳戒細(xì)鍙戠敓錛屾湰鍦板彉閲忓間笉鍑嗙‘錛屽洜涓哄煎瓨鍦ㄥ瘎瀛樺櫒涓渶瑕佸皬蹇冦?/p>
瑙傚療鍐呭瓨 p /f 琛ㄨ揪寮? 琛ㄨ揪寮忚鎵撳嵃浣嶇疆 x x /Nuf x/s 0xfffff81946000 鎵撳嵃瀛楃涓?/p>
x /32bx arg bit 16紱佸埗 (gdb) x /32bx &i p arg[0] p *&a[0]@10 a0鏁扮粍寮濮嬬殑10涓厓绱?/p>
鍙嶆眹緙?/p>
disas main main鍙嶆眹緙栦唬鐮?br/>
x/5i schedule 榪欎釜鍦板潃寮濮嬬殑5鏉℃眹緙栨寚浠ゃ?/p>
gdb mov 浠庡乏寰鍙寵祴鍊糰t&t姹囩紪銆?/p>
stop 瑕佷笉瑕佷腑鏂笅鏉ョ湅 handle SIGPIPE 涓嶈涓柇涓嬫潵錛屾墦鍗頒竴涓俊鎭紝緗戠粶紼嬪簭甯哥敤 (gdb) handle SIGPIPE nostop info threads LWP錛峫ight weight process 綰跨▼緙栧彿銆?br/>
* gdb褰撳墠綰跨▼ 鍒囨崲褰撳墠綰跨▼ thread 2 鎵撳嵃鎵鏈夌嚎紼?/p>
thread apply all bt 閽堝涓緹ょ嚎紼嬬殑鍛戒護(hù)閬垮厤鍒囨崲鏉ョ湅銆?/p>
綰跨▼鏀瑰悕瀛?/p>
thread name 錛籲ame錛?/p>
鎴戣嚜宸辯粡楠?LWP 鍙互寰堝ソ鐨勮瀵熺嚎紼嬭礋杞芥儏鍐點(diǎn)?/p>
鍙傝冭祫鏂欙細(xì) 涓枃緲昏瘧錛?br/>
https://code.google.com/p/ooc/downloads/detail?name=ooc-translate-preview-r26.pdf&can=2&q= 杞婚噺綰х殑C璇█闈㈠悜瀵硅薄緙栫▼妗嗘灦 UML鈥擮OPC宓屽叆寮廋璇█寮鍙戠簿璁?br/>
閲岄潰鏈変竴濂楁鏋跺彲浠?c鍐橭O. 浣犺瘯榪囪繖鏍峰啓C(jī)紼嬪簭鍚?錛嶏紞鍑芥暟寮忕紪紼?br/>
< > 鎴戞墍鍋忕埍鐨?C 璇█闈㈠悜瀵硅薄緙栫▼鑼冨紡錛嶏紞浜戦 C璇█闈㈠悜瀵硅薄緙栫▼ -- 6綃囦笓鏍?br/>
http://blog.csdn.net/column/details/object-orient-c.html ** valgrind --tool=cachegrind ./test2** Command: ./test1 I refs: 905,721,688 D refs: 514,830,867 (386,118,735 rd + 128,712,132 wr) D1 miss rate: 0.8% ( 0.0% + 3.1% ) LL refs: 4,030,005 ( 27,742 rd + 4,002,263 wr) gcc -o test2 test2.c I refs: 905,720,801 D refs: 514,830,348 (386,118,427 rd + 128,711,921 wr) LL refs: 64,029,818 ( 27,575 rd + 64,002,243 wr) Starting! valgrind璋冭瘯CPU緙撳瓨鍛戒腑鐜囧拰鍐呭瓨娉勬紡
_DEBUG
_WINDOWS
_USRDLL 闃呰鍏ㄦ枃
]]>姒傝
鍩虹
鐢ㄦ埛鎬佷細(xì)璇?/h2>
鐬棿闈欐佸垎鏋愶紝榪涚▼姝葷姸鎬併?br/>
gdb –core=file
gdb –args exe [args]3縐嶈皟璇曞凡鏈夎繘紼?/h3>
file exe
run [args]
鍛戒護(hù)琛屽弬鏁?/h4>
鐜鍙橀噺鍜屾墽琛岃礬寰?/h2>
宸ヤ綔鐩綍
杈撳叆杈撳嚭
run > a.txt
tty /dev/ttyb inferior 涓嬪眰 澶氫釜榪涚▼璋冭瘯
NULL 紼嬪簭娌℃湁璺戞垨鑰呭凡緇忕粓姝?br/>
clone-inferior -copies 2 澶嶅埗褰撳墠涓嬪眰2浠?
Num Description Executable
* 1 process 10087 /home/gao/code/a
(gdb) clone-inferior -copies 2
Added inferior 2.
Added inferior 3.
(gdb) info inferiors
Num Description Executable
3
2
* 1 process 10087 /home/gao/code/a
(gdb)
kill inferior 璋冭瘯榪涚▼閫浜嗭紝浣嗘槸inferior綰綍榪樺湪銆?/p>
Tab 甯姪
remove-inferiors remove-symbol-file
(gdb) remove-
remove-inferiors remove-symbol-file
(gdb) remove-file 鍛戒護(hù)
鍙互鏀寔 run > >> < 閲嶅畾鍚?闄勫姞鍒拌繘紼?/h2>
緇堟璋冭瘯榪涚▼
ctrl
+ D
鎵ц鎺у埗
杞歡鏂偣
tbreak 涓嬈℃?
rbreak 姝e垯琛ㄨ揪寮忎竴鎵規(guī)柇鐐?
紜歡鏂偣
location
b main 涓柇鍦╩ain鍑芥暟
info funciton useage 鏄劇ずuseage鍑芥暟鍦板潃
info *0x88888e4 鐩存帴鍐欏湴鍧璁懼畾鏂偣
info b 鏄劇ず鎵鏈夋柇鐐?
list usage 鏄劇ずuseage鍑芥暟
b line.c:11
b +2 褰撳墠鏄劇ず鍒?4琛岋紜2琛屾墍浠ヨ瀹氬湪17琛?/p>
(gdb)hbreak hd_ioctl
(gdb) info b
鐗╃悊鏈哄彲浠ヨ瀹?
Hardware assisted breakpoint 2 at 0x40053a: v. (2 locations)
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y
breakpoint already hit 1 time
1.1 y 0x000000000040054f in main at a.c:10 inf 1
1.2 y 0x000000000040054f in main at a.c:10 inf 2
2 hw breakpoint keep y
2.1 y 0x000000000040053a in v at a.c:4 inf 1
2.2 y 0x000000000040053a in v at a.c:4 inf 2
(gdb)綆$悊鏂偣
delete 1 鍒犻櫎
disable 1
enable 1
delete 鍒犻櫎鎵鏈夌殑鏂偣
clear sum 鍒犻櫎sum鍑芥暟鍏ュ彛鐨勬墍鏈夋柇鐐?/p>
鎵╁睍鏂偣
watch *( int * )
c 緇х畫榪愯
info b //
娉ㄦ剰錛寈86紜歡璋冭瘯錛屽啓鎿嶄綔錛屾墽琛岃繃榪欎竴琛岋紝gdb鏄劇ず涓嬩竴琛岋紝瑕佺湅涓婁竴琛屻俬w watchpoint錛屽湪x86騫沖彴wachtpoint鍩轟簬紜歡瀹炵幇錛屽叾浠栧鉤鍙板彲鑳芥槸鍩轟簬杞歡瀹炵幇銆?vc6綰蔣浠舵墽琛岋紝鎵ц鐩爣閫熷害浣庛?br/>
鎵ц浣嶇疆瓚呰繃褰撳墠鍖哄煙錛屾棤鏁堢洃瑙嗙偣浼?xì)琚垹闄ゃ?/p>
awatch 璇繪垨鍐欏仠涓嬫潵銆?awatch fd
watch -l
info threads 甯︼紛 褰撳墠綰跨▼
()silent
()print “fd is %d\n”,fd
()continue
()end鎵ц鎺у埗
綾諱技nexti
璺戣搗鏉ョ洿鍒?鍙鋒柇鐐瑰懡涓紝蹇嵎紱佹鍏朵粬鏂偣銆?/p>
璋冪敤鍑芥暟錛?/h3>
寮哄埗榪斿洖
瑙﹀彂涓柇
絎﹀彿
閲岄潰濡傛灉鏈塴ine location debug鏍囩ず
< ddebs.ubuntu.com/pool/main/>
鍒嗙鎿嶄綔
strip
https://askubuntu.com/questions/197016/how-to-install-a-package-that-contains-ubuntu-kernel-debug-symbols
dpkg -s libc.so.6
sudo apt-get -c aptproxy.conf install libc6-dbg
鑷姩鎼滅儲(chǔ) path 璺緞
* 鍏變韓搴撴病璋冭瘯淇℃伅
info vaiables regex 綾誨悕錛忓嚱鏁板悕錛忓彉閲忓悕鍐呭瓨鍦板潃涓庣鍙蜂簰鎹?/h3>
Symbol “main” is a function at address 0x400547.
(gdb) info symbol 0x400547
main in section .text of /home/gao/code/a
info va鏄劇ず婧愮爜
list -
dir 婧愮爜璺緞
show dir
sudo apt-get install coreutils-dbgsym
gdb /bin/ls
list main
dir ~/src/coreutils-7.4/src
list main
/home/ge/eglibc-2.15
cwd 褰撳墠宸ヤ綔璺緞鏌ョ湅璋冭瘯鐩爣
鍑芥暟鍙傛暟
灞閮ㄥ彉閲?/p>
frame n 鍒囨崲鏍堝撫
up n
down n
info frame 錛籥ddress錛?br/>
info args
info locals
print
xduotcf
N 鎵撳嵃鍑犱釜鍗曞厓
u 姣忎釜鍗曞厓澶у皬 b-1byte w-2byte h-4byte g-8byte
f s瀛楃涓瞚鎸囦護(hù)鏍煎紡
0x7fffffffc76c: 0x01 0x00 0x00 0x00 0x70 0x05 0x40 0x00
0x7fffffffc774: 0x00 0x00 0x00 0x00 0x40 0xfa 0xa2 0xf7
0x7fffffffc77c: 0xff 0x7f 0x00 0x00 0x58 0xc8 0xff 0xff
0x7fffffffc784: 0xff 0x7f 0x00 0x00 0x58 0xc8 0xff 0xff
(gdb)
p arg[i]
楂樼駭鎶宸?/h2>
淇″彿
printf 鎵撳嵃淇℃伅
pass 瑕佷笉瑕佷紶閫掔粰搴旂敤紼嬪簭銆?/p>
Signal Stop Print Pass to program Description
SIGPIPE No Yes Yes Broken pipeThread
]]>
]]>
Object-oriented Programming with ANSI-C
1993騫達(dá)紝絎竴浠絚濡備綍緙栧啓OO鐨勮祫鏂?free.
OOC.PDF
https://www.cs.rit.edu/~ats/books/ooc.pdf
http://sinojelly.blog.51cto.com/479153/281184
http://pan.baidu.com/share/link?shareid=3402978666&uk=3188261067&adapt=pc&fr=ftw#path=%252FC%25E8%25AF%25AD%25E8%25A8%2580
http://blog.codingnow.com/2010/03/object_oriented_programming_in_c.html
]]>code1:
#include <stdio.h>
#define MAXROW 8000
#define MAXCOL 8000
int main () {
int i,j;
static int x[MAXROW][MAXCOL];
printf ("Starting!\n");
for (i=0;i<MAXROW;i++)
for (j=0;j<MAXCOL;j++)
x[i][j] = i*j;
printf("Completed!\n");
return 0;
}
code2:
#include <stdio.h>
#define MAXROW 8000
#define MAXCOL 8000
int main () {
int i,j;
static int x[MAXROW][MAXCOL];
printf ("Starting!\n");
for (j=0;j<MAXCOL;j++)
for (i=0;i<MAXROW;i++)
x[i][j] = i*j;
printf("Completed!\n");
return 0;
}
```
##緇撴灉
Starting!
Completed!
I1 misses: 4,177
LLi misses: 2,808
I1 miss rate: 0.00%
LLi miss rate: 0.00%
D1 misses: 4,025,828 ( 23,565 rd + 4,002,263 wr)
LLd misses: 4,008,456 ( 6,997 rd + 4,001,459 wr)
LLd miss rate: 0.8% ( 0.0% + 3.1% )
LL misses: 4,011,264 ( 9,805 rd + 4,001,459 wr)
LL miss rate: 0.3% ( 0.0% + 3.1% )
** valgrind --tool=cachegrind ./test2**
I1 misses: 4,113
LLi misses: 2,811
I1 miss rate: 0.00%
LLi miss rate: 0.00%
D1 misses: 64,025,705 ( 23,462 rd + 64,002,243 wr)
LLd misses: 4,016,427 ( 6,977 rd + 4,009,450 wr)
D1 miss rate: 12.4% ( 0.0% + 49.7% )
LLd miss rate: 0.8% ( 0.0% + 3.1% )
LL misses: 4,019,238 ( 9,788 rd + 4,009,450 wr)
LL miss rate: 0.3% ( 0.0% + 3.1% )
Completed!
```鍙傝冿細(xì)
http://laoxu.blog.51cto.com/4120547/1395236
]]>
]]>
]]>
]]>
]]>
]]>
]]>
AA * ptr;
}AA ; 闃呰鍏ㄦ枃
]]>
]]>
]]>
]]>
]]>
]]>
openssl-1.0.2c 闃呰鍏ㄦ枃
]]>
exe 鏄痙ebug鐗堟湰.
闈欐佸簱鏄痳elease鐗堟湰.
鍘熸潵鐨勪慨鏀?relase 鐗堟湰澶氱嚎紼嬮潤鎬佸簱 CFLAGS= /MT
緙栬瘧鐨勬椂鍊欓渶瑕侀厤緗悎閫傜殑綰跨▼搴?nbsp;
宸ョ▼涓摼鎺ュ搴旂殑鐗堟湰鐨刲ib鏂囦歡.
鍙傝?
]]>
]]>
]]>
]]>
澶存枃浠?/font> #include <omp.h omp_set_num_threads(threadNumber); } } GCC閰嶇疆 1. 緙栬瘧
#pragma omp parallel default(shared) private(i,riskId)
{
#pragma omp for
-fopenmp
璁懼畾綰跨▼鏁伴噺 export OMP_NUM_THREADS=6
鍙傝?/font>
閫氳繃 GCC 瀛︿範(fàn) OpenMP 妗嗘灦
http://www.ibm.com/developerworks/cn/aix/library/au-aix-openmp-framework/
]]>
DIAG_SIGHANDLER_ENABLED=FALSE
DIAG_DDE_ENABLED=FALSE
闃呰鍏ㄦ枃
]]>
]]>
]]>
瀹夎浜?sql- server2005 express ,瀹夎榛樿浼?xì)鍏抽棴缃懢l滆繛鎺ョ殑絳?闇瑕佹墦寮ip:1433绔彛.
璐︽埛瀵嗙爜闇瑕佷嬌鐢?ms sql鈥搒erver 鐧誨綍鐧誨綍.
2.sqlapi 鐨勪嬌鐢?
姝g‘鐨剆qlapi ++ ms sql server 涓?
char * dbname = "127.0.0.1\\SQL2005EXPRESS@master";
闃呰鍏ㄦ枃
]]>
鍐茬獊
瑙e喅鍔炴硶:
1.鍥犱負(fù)2涓ご鏂囦歡鏉ヨ嚜涓嶅悓欏圭洰. 淇敼婧愭枃浠跺交搴曡В鍐蟲帀榪欎釜闂.
2.鍏堝悗寮曠敤浣嶇疆 .
3.闅愯棌涓嶅繀瑕佺殑 .h鏂囦歡,鍙湁闇瑕乧pp鎵嶆坊鍔爃寮曠敤.榪欐牱闃叉涓嶅繀瑕佺殑寮曠敤. 闃呰鍏ㄦ枃
]]>
緇欏嚭浜?孌典唬鐮乧鍜宩ava錛?br />1.闅忔満鏁版彃鍏ユ暟緇勪腑銆?br />2.sum緇熻鐩稿姞 銆?br />
c 緇撴灉涓峴ort 闇瑕?1縐掞紝鎺掑簭鍚?縐掋?br />java 5縐掋?br />闂鍦ㄥ摢閲岋紵
鍒嗘敮棰勬祴璧勬枡錛?nbsp;
http://comp.lang.cpp.moderated.narkive.com/oZn86c9y/hidden-features-and-dark-corners-of-c-stl
]]>