1.首先配置了make的-g參數(shù),使cc -g
2.gdb objs/nginx 開始調(diào)試
3.b src/core/nginx.c:91 打斷點到函數(shù)的第一行,肯定有argc的
1.有時候斷點失效,捉摸不透,感覺自己用了假的gdb,比如輸入r命令,直接執(zhí)行完成了,并沒有中斷,使用print var,說
(gdb) print argc
No symbol "argc" in current context.
2.list參數(shù)顯示文件源碼,但是顯示的是這個:
(gdb) list
1 /* Startup code compliant to the ELF x86-64 ABI.
2 Copyright (C) 2001-2012 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4 Contributed by Andreas Jaeger <aj@suse.de>, 2001.
5
6 The GNU C Library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
10
(gdb) list main
No line number known for main.
按照網(wǎng)上配置了directory,還是不能解決,我是使用
(gdb) directory src/core/
編譯開發(fā)版的 nginx,這里以 github 上的 nginx 源碼鏡像為例
git clone https://github.com/nginx/nginx.git
cd nginx
CFLAGS="-g -O0" ./auto/configure --with-debug --prefix=../etc
make
make install
修改 nginx.conf 配置文件,讓它監(jiān)聽在 8080 端口,并啟用開發(fā)模式
worker_processes 1;
+master_process off;
+daemon off;
http {
server {
-listen 80;
+listen 8080;
此時運行 nginx ,然后用瀏覽器打開 http://localhost:8080/ 確認網(wǎng)站運行
../etc/sbin/nginx
最后使用 gdb 重新運行 nginx
xxx/nginx > gdb ../etc/sbin/nginx
Reading symbols from ../etc/sbin/nginx...done.
(gdb) b main
Breakpoint 1 at 0xNNNN: file src/core/nginx.c, line 196.
(gdb) r
Starting program: ../etc/sbin/nginx
[Thread debugging using libthread_db enabled]
Using host libthread_db library "xxx/lib/libthread_db.so.1".
(gdb) b main
Breakpoint 1, main (argc=1, argv=0xNNNN) at src/core/nginx.c:196
(gdb) list main
191 static char **ngx_os_environ;
192
193
194 int ngx_cdecl
195 main(int argc, char *const *argv)
196 {
197 ngx_buf_t *b;
198 ngx_log_t *log;
199 ngx_uint_t i;
200 ngx_cycle_t *cycle, init_cycle;
(gdb) print argc
$1 = 1
(gdb) print argv[0]
$2 = 0xNNNN "xxx/etc/sbin/nginx"
help
或者 help xxx
獲得命令幫助。b <函數(shù)名>
,不必找出函數(shù)的文件位置。list
同理。北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團,成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。