導航:首頁 > 源碼編譯 > win編譯gdb

win編譯gdb

發布時間:2023-03-25 10:43:03

Ⅰ 如何在windows下編譯linux下的c++程序

安裝虛擬機,在虛擬機中安裝Ubuntu,再在Ubuntu上進行Linux程序開發;還有種方式就是遠程登陸到另外一台Linux主機;

Ⅱ 如何編譯Windows下的OpenOCD

【OpenOCD介紹】
OpenOCD為嵌入式目標系統提供一個調試,在線編程和JTAG邊界掃描測試的工具。支持Wiggler,基於FT2232的JTAG界面等一些調試器。目標晶元支持ARM7,ARM9, ARM10, ARM11和Cortex等核心的晶元。並提供一個GDB Server介面。

【OpenOCD的編譯和安裝】
1. 如果是Windows平台的話,需要先安裝Cygwin環境,注意一定要選擇安裝以下開發包:

- autoconf: Wrapper scripts for autoconf commands
- automake: Wrapper scripts for automake and aclocals
- gcc: C compiler upgrade helper
- make: The GNU version og the 'make' utility
- subversion: A version control system
(可以完全安裝,佔用5G多的空間,需要下載800M的文件)。

2. 下載OpenOCD的SVN源代碼,打開Cygwin命令行界面,執行如下的命令:
mkdir /home/openocd
cd /home/openocd
svn checkout svn://svn.berlios.de/openocd/trunk或是
svn checkout http://svn.berlios.de/svnroot/repos/openocd/trunk trunk

下載需要一定的時間,完成後,當前目錄下就多了trunk目錄,裡面就有源代碼。

3. 如果你想要編譯用於FT2232介面的openocd,需要下載FTDI的驅動
解壓後會自動生成一個文件夾"CDM 2.04.06 WHQL Certified" , 從/i386或/amd64中(根據你的系統來選擇)復制 ftd2xx.lib到/home/openocd/ftd2xx(自己建立)中。現在在openocd文件夾下就有兩個文件夾,如下:
/home/openocd/trunk
/home/openocd/ftd2xx

4. 接著使用如下命令配置並編譯:
cd trunk
./bootstrap

如果你想生成一個基於cygwin的openocd,則輸入
./configure --enable-ft2232_ftd2xx --with-ftd2xx=/home/openocd/ftd2xx
生成一個基於mingw 的openocd,則輸入
./configure --enable-ft2232_ftd2xx --with-ftd2xx=/home/openocd/ftd2xx CC="gcc -mno-cygwin"
如果想同時支持FT2232和Wiggler,則輸入
./configure --enable-parport –enable-parport_giveio --enable-ft2232_ftd2xx --with-ftd2xx=/home/openocd/ftd2xx CC="gcc -mno-cygwin"

正確配置之後,就可以運行以下命令生成 OpenOCD:

make // 即可在/trunk/src中生成openocd
make install // 將openocd和配置文件安裝到/usr/local/bin和/usr/local/lib中
make pdf // 在/trunk/doc中生成pdf (必須安裝tex)

這樣OpenOCD就編譯並安裝完成了,並在doc目錄下生產了openocd.pdf幫助文檔。
可以使用命令"openocd -v"來查看版本。

【OpenOCD的配置】
詳細配置說明,請參考幫助文檔
LPC2000的配置文件(openocd.cfg):

#daemon configuration
telnet_port 4444
gdb_port 3333
tcl_port 6666

# tell gdb our flash memory map
# and enable flash programming
gdb_memory_map enable
gdb_flash_program enable

#interface
interface ft2232
ft2232_device_desc "USB Serial Converter A"
#ft2232_device_desc "USB OpenOCD JTAG A"
ft2232_layout "usbjtag"
ft2232_vid_pid 0x0403 0x6010
jtag_speed 3
#jtag_khz 300

#delays on reset lines
jtag_ntrst_delay 200

# NOTE!!! LPCs need reset pulled while RTCK is low. 0 to activate
# JTAG, power-on reset is not enough, i.e. you need to perform a
# reset before being able to talk to the LPC2148, attach is not
# possible.

#use combined on interfaces or targets that can't set TRST/SRST separately
reset_config trst_and_srst srst_pulls_trst

#LPCs need reset pulled while RTCK is low. 0 to activate JTAG, power-on reset is not enough
jtag_reset 1 1
jtag_reset 0 0

#jtag scan chain
jtag_device 4 0x1 0xf 0xe

target arm7tdmi little 0 arm7tdmi-s_r4
[new_target_name] configure -event reset-init {
# Force target into ARM state
soft_reset_halt
#do not remap 0x0000-0x0020 to anything but the flash
mwb 0xE01FC040 0x01
}
working_area 0 0x40000000 0x4000 nobackup
#flash bank lpc2000 <base> <size> 0 0 <target#> <variant>
flash bank lpc2000 0x0 0x7d000 0 0 0 lpc2000_v2 14765

【OpenOCD的測試】
打開Cygwin命令行界面,執行命令:
openocd -f openocd.cfg
以下是我的運行截圖:

【IAR的配置】
在項目選項的Debug中的setup頁里,選擇GDB Server;

如果代碼需要下載到flash中運行,Download頁里選擇Use flash loader;在plugin頁里,可以去掉stack以提高速度。
在下面的GDB Server中,TCP/IP address or hostname中添localhost。

之後就可以按調試按鈕開始調試了。

Ⅲ 如何在Windows下編譯或調試MySQL

用vs code 就可以了。

Visual Studio Code

Visual Studio Code(簡稱VS Code)是由微軟開發的,同時支持Windows、Linux和macOS操作系統的開源文本編輯器。它支持調試,內置了Git 版本控制功能,同時也具有開發環境功能,例如代碼補全(類似於IntelliSense)、代碼片段、代碼重構等。該編輯器支持用戶自定義配置,例如改變主題顏色、鍵盤快捷方式、編輯器屬性和其他參數,還支持擴展程序並在編輯器中內置了擴展程序管理的功能。


安裝LLDB

LLDB是LLVM編譯器的一部分,推薦使用Homebrew安裝LLVM工具集,不建議使用系統自帶的LLDB,安裝前必須先創建證書否則無法安裝,步驟如下:

創建完成後,開始安裝LLVM

brew install llvm --with-python@2--with-lldb

安裝插件

VS Code自帶有debug功能,這里我推薦使用LLDB Debugger插件。

接下來,為項目配置調試參數。

配置調試參數

使用VS Code打開MySQL源碼目錄,在側邊欄選擇debug欄目,添加配置,program輸入需要調試的程序路徑,這里選擇你編譯好的mysqld路徑,args輸入程序啟動所需的參數,通常會指定mysqld的配置文件。這樣就配置好了,是不是很簡單。

啟動調試

點擊啟動按鈕,啟動後如果沒有設置斷點會mysqld會正常啟動,如果觸發了斷點會如下圖顯示。

整個調試窗口基本分為六部分,所有的調試操作都在這里完成:

1:顯示變數信息

2:設置重點關注的變數

3:顯示調用棧信息

4:設置斷點信息,在代碼行號前也可以設置斷點

5:代碼顯示區域,上方是調試按鈕,包括 continue/stepover/step in/step out/restart/stop

6:調試終端輸入輸出區


斷點設置

在代碼行號前點擊即可在該行為設置斷點,也可以根據條件設置斷點。以設置ConditionalBreakpoint為例,當程序啟動後會按照你設置的條件表達式判斷是否觸發斷點。

Conditional Breakpoint這種方式用在目標變數達到某條件時觸發斷點,其餘則跳過繼續執行。比如:設置變數等於目標表名時觸發斷點,其餘表則跳過,相對函數名斷點省去很多手工跳過操作。

遠程調試

假如你想調試遠程Linux伺服器上的MySQL上面的方法就不合適了,這時需要遠程調試。lldb和gdb都支持遠程調試,這里以lldb為例。

需要先在遠程主機上安裝lldb,使用yum安裝,源地址在這里http://mirror.centos.org/centos/7/sclo/x86_64/rh

remote$ yum install -y llvm-toolset-7

安裝完成後,啟動lldb-server

remote$ /opt/rh/llvm-toolset-7/root/usr/bin/lldb-serverplatform --listen"*:9191"--server

接下來,在VS Code調試界面中新增配置項。

{

"type":"lldb",

"request":"attach",

"name":"Remote attach",

"program":"~/mysql5626/usr/local/mysql/bin/mysqld",

"pid":"<target_pid>",

"initCommands": [

"platform select remote-linux",

"platform connect connect://<remote_host>:9191"

],

"sourceMap": {

"/export/home/pb2/build/sb_0-15908961-1436910670.17/mysql-5.6.26":"/Users/hongbin/workbench/mysql-server"

}

},

program:本機也要拷貝一份目標程序,載入

pid:填寫遠程主機的mysqld進程id

sourceMap:填寫mysqld編譯的代碼路徑與本機代碼庫路徑的映射,這樣調試時代碼才可以和程序關聯在一起看

注意:記得調試前將代碼切換到與目標程序版本一致的branch

Ⅳ 如何編譯可以在Windows下運行的帶有Python支持的ARM Linux GDB

隨著win10uwp應用軟體的增多,windows RT當然可以復活啦,win10軟體商店裡面的uwp應用軟體是支持ARM晶元的。

Ⅳ 如何編譯可以在Windows下運行的帶有Python支持的ARM Linux GDB

做這件事情的目的是為了在QtCreator里調試ARM Linux程序的時候,能看清楚QString、QList這些Qt特有的對象的內容,而不是一個完全看不懂的結構體。
目前(2014年8月)Linaro、CodeSourcery的GCC工具鏈里的GDB都不支持Python。想知道你用的GDB支持不支持,試一試就行,這樣表示不支持:
(gdb) python
>print 'Hello GDB!'
>(按Ctrl+D)Python scripting is not supported in this of GDB.
這樣表示支持:
(gdb) python
>print 'Hello GDB!'
>(按Ctrl+D)Hello GDB!
這件事情乍一看也很簡單,只要把GDB源碼下載下來,然後再配置,打開Python支持就行了。實際上會遇到的問題是,在MinGW下,又要與「\」和「:」這兩個Windows路徑里的刺頭斗爭了。我覺得我之前挺傻,編譯MinGW下Qt的時候,就去硬磕源碼和configure腳本去了。這次GDB的configure是自動生成的,不是給人看的,configure.ac看起來也很費勁,根本磕不下去,於是我換了個思路,在ubuntu下交叉編譯吧,sudo apt-get install mingw32,這是Ubuntu下的MinGW交叉編譯器。
然後是依賴,這樣的GDB要依賴expat和python的開發版本。如果是ubuntu底下直接編譯,apt-cache search一下他們的開發版本,然後sudo apt-get install一下就好了;給MinGW交叉編譯就麻煩了。先說expat,這個好辦,把http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz下載下來,然後:
./configure --prefix=[安裝目錄,如/home/c/mingw-gdb/expat] --host=i586-mingw32msvc
make
make install
會提示一些警告,無視即可。
Python就無語了,目前的GDB貌似最高支持Python 2.7,而2.7版本的Python本身不支持MinGW…… 好在有高手做了Patch,也寫了說明,可以參考這文章:http://mdqinc.com/blog/2011/10/cross-compiling-python-for-windows-with-mingw32/
但是,就算這樣,編譯也充滿挑戰,要修復很多問題,出來的Python還少「nt」模塊。就在我覺得沒辦法的時候,突然發現Windows版Qt提供的MinGW居然內置了Python開發包,位置在Tools/mingw48_32/opt,趕緊把它拷貝到Linux下,比如/home/c/mingw-gdb/python。當然,你也必須確保ubuntu下有可用的python。
然後,給GDB打一個補丁:
--- gdb-7.8/gdb/configure 2014-07-29 20:37:42.000000000 +0800
+++ gdb-7.8-old/gdb/configure 2014-08-30 00:08:27.122042706 +0800
@@ -8263,21 +8263,22 @@
# We have a python program to use, but it may be too old.
# Don't flag an error for --with-python=auto (the default).
have_python_config=yes
- python_includes=`${python_prog} ${srcdir}/python/python-config.py --includes`
+ python_config_tool=`echo ${python_prog} | sed "s#python.exe#python-config#g"`
+ python_includes=`${python_config_tool} --includes`
if test $? != 0; then
have_python_config=failed
if test "${with_python}" != auto; then
as_fn_error "failure running python-config --includes" "$LINENO" 5
fi
fi
- python_libs=`${python_prog} ${srcdir}/python/python-config.py --ldflags`
+ python_libs=`${python_config_tool} --ldflags`
if test $? != 0; then
have_python_config=failed
if test "${with_python}" != auto; then
as_fn_error "failure running python-config --ldflags" "$LINENO" 5
fi
fi
- python_prefix=`${python_prog} ${srcdir}/python/python-config.py --exec-prefix`
+ python_prefix=`${python_config_tool} --exec-prefix`
if test $? != 0; then
have_python_config=failed
if test "${with_python}" != auto; then
@@ -8343,12 +8344,12 @@
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+#if ac_fn_c_try_link "$LINENO"; then :
have_libpython=${version}
found_usable_python=yes
PYTHON_CPPFLAGS=$new_CPPFLAGS
PYTHON_LIBS=$new_LIBS
-fi
+#fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS=$save_CPPFLAGS
這個補丁的目的是強制為檢測到python。
然後給拷貝到Linux下的python開發包打一個補丁:
--- python-old/bin/python-config 2013-04-18 02:43:01.000000000 +0800
+++ python/bin/python-config 2014-08-30 00:53:16.630060288 +0800
@@ -1,4 +1,4 @@
-#!/temp/x32-480-posix-dwarf-r2/mingw32/opt/bin/python2.7.exe
+#!/usr/bin/python

import sys
import os
@@ -31,26 +31,23 @@

for opt in opt_flags:
if opt == '--prefix':
- print sysconfig.PREFIX
+ print '../python'

elif opt == '--exec-prefix':
- print sysconfig.EXEC_PREFIX
+ print '../python'

elif opt in ('--includes', '--cflags'):
- flags = ['-I' + sysconfig.get_python_inc(),
- '-I' + sysconfig.get_python_inc(plat_specific=True)]
+ flags = ['-I' + os.path.split(os.path.realpath(__file__))[0] + '/../include/python2.7']
if opt == '--cflags':
- flags.extend(getvar('CFLAGS').split())
+ flags += ['-fno-strict-aliasing -DMS_WIN32 -DMS_WINDOWS -DHAVE_USABLE_WCHAR_T -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes']
print ' '.join(flags)

elif opt in ('--libs', '--ldflags'):
- libs = getvar('LIBS').split() + getvar('SYSLIBS').split()
- libs.append('-lpython'+pyver)
+ libs = ['-lm -lpython2.7 -Wl,--out-implib=libpython2.7.dll.a']
# add the prefix/lib/pythonX.Y/config dir, but only if there is no
# shared library in prefix/lib/.
if opt == '--ldflags':
if not getvar('Py_ENABLE_SHARED'):
- libs.insert(0, '-L' + getvar('LIBPL'))
- libs.extend(getvar('LINKFORSHARED').split())
+ libs.insert(0, '-L' + os.path.split(os.path.realpath(__file__))[0] + '/../lib/python2.7/config')
print ' '.join(libs)

因為Linux下是無法運行開發包中的python.exe的,所以這個補丁借用了ubuntu的python。裡面的cflags和ldflags都是在Windows底下運行原始python-config獲得的。prefix和exec-prefix設成「../python」,可以在編譯完以後,把python開發包拷貝到gdb安裝目錄裡面的python子目錄,這樣運行GDB的時候就不需要設定PYTHONHOME環境變數了。
最後一個事情,確保你的Linux下有arm交叉編譯器,我的是arm-linux-gnueabihf,是啥target就寫啥。
准備工作做完了,開始配置和編譯:
./configure --with-expat --host=i586-mingw32msvc --target=arm-linux-gnueabihf --with-libexpat-prefix=[expat安裝位置] --with-python=[python開發包安裝位置/bin/python.exe]
make
make DESTDIR=[GDB安裝位置] install
然後把GDB安裝位置下面的所有文件拷貝到Windows下,再把python開發包拷貝到同目錄下的python子目錄,大功告成。
如果提示沒找到libpython2.7.dll,那就把GDB安裝目錄的python/bin下的拷貝到bin下。
如果發現生成的exe文件太大了,那就strip一下。
2015年9月12日追加:
在windows下調試時,一般會提示說載入不了共享庫,讓你用"set sysroot"或"set solib-search-path"之類設定路徑的。這個問題可以通過.gdbinit文件,用上面這兩條命令來設定路徑解決,如果想一勞永逸,可以在編譯的時候加上host_configargs環境變數來解決這個問題:
host_configargs=--with-sysroot=E:\MinGW\opt\sysroot-arm ./configure ...
或者
export host_configargs=--with-sysroot=E:\MinGW\opt\sysroot-arm
./configure ...

後面的路徑是你放在windows下的sysroot的位置。

Ⅵ windows下怎麼使用gdb

window模式下字元調試這是路徑C:\Dev-Cpp\bin gdb windows 用開發工具dev-cpp,就在編譯開發鉛搜工具下直接執行粗罩。 如槐凳歷果是linux下,在所編譯的文件夾中直接輸入> gdb 文件名

閱讀全文

與win編譯gdb相關的資料

熱點內容
java截取文件名 瀏覽:461
jquery教程pdf 瀏覽:162
三略pdf 瀏覽:582
spiflash單片機 瀏覽:9
阿里雲的域名怎麼解析到國外伺服器 瀏覽:281
app客戶端開發用什麼伺服器 瀏覽:289
台灣人能備案雲伺服器嗎雲空間 瀏覽:466
程序員小哥哥都喜歡動漫 瀏覽:372
如何用免費亞馬遜雲搭建伺服器 瀏覽:663
php評論功能實現代碼 瀏覽:526
犀牛中移動物件命令 瀏覽:786
程序員上班期間可以戴耳機嗎 瀏覽:255
伺服器啟動卡怎麼使用 瀏覽:794
逛了一天累趴了來一歌解壓句子 瀏覽:345
谷歌app在哪裡掃碼 瀏覽:989
華為手環加密門禁卡怎麼設置 瀏覽:732
pdf轉xlsx 瀏覽:96
nh3水溶液ph的演算法 瀏覽:484
pdf貓壓縮 瀏覽:49
數據挖掘分類演算法研究 瀏覽:102