




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第6章嵌入式系統(tǒng)的調(diào)試調(diào)試器兩種遠程調(diào)試的方案第6章嵌入式系統(tǒng)的調(diào)試調(diào)試器一調(diào)試器遠程調(diào)試調(diào)試器還是運行于通用桌面操作系統(tǒng)的應用程序,被調(diào)試的程序則運行于基于特定硬件平臺的嵌入式操作系統(tǒng)(目標操作系統(tǒng))。一調(diào)試器遠程調(diào)試問題:調(diào)試器與被調(diào)試程序如何通信被調(diào)試程序產(chǎn)生異常如何及時通知調(diào)試器調(diào)試器如何控制、訪問被調(diào)試程序調(diào)試器如何識別有關(guān)被調(diào)試程序的多任務信息并控制某一特定任務調(diào)試器如何處理某些與目標硬件平臺相關(guān)的信息(如目標平臺的寄存器信息、機器代碼的反匯編等)。問題:調(diào)試器與被調(diào)試程序如何通信二兩種主要遠程調(diào)試的方案1、插樁(stub)
2、片上調(diào)試(OnChipDebugging)二兩種主要遠程調(diào)試的方案1、插樁(stub)
1、插樁(stub)
在目標操作系統(tǒng)和調(diào)試器內(nèi)分別加入某些功能模塊,二者互通信息來進行調(diào)試。1、插樁(stub)在目標操作系統(tǒng)和調(diào)試器內(nèi)分別加入某些步驟調(diào)試器與被調(diào)試程序的通信
調(diào)試器與目標操作系統(tǒng)通過指定通信端口(串口、網(wǎng)卡、并口)遵循遠程調(diào)試協(xié)議進行通信。被調(diào)試程序產(chǎn)生異常及時通知調(diào)試器
目標操作系統(tǒng)的所有異常處理最終都要轉(zhuǎn)向通信模塊,告知調(diào)試器當前的異常號;調(diào)試器據(jù)此向用戶顯示被調(diào)試程序產(chǎn)生了哪一類異常。步驟調(diào)試器與被調(diào)試程序的通信
調(diào)試器與目標操作系統(tǒng)通過指定通調(diào)試器控制、訪問被調(diào)試程序
調(diào)試器的這類請求實際上都將轉(zhuǎn)換成對被調(diào)試程序的地址空間或目標平臺的某些寄存器的訪問,目標操作系統(tǒng)接收到這樣的請求可以直接處理。對于沒有虛擬存儲概念的簡單的嵌入式操作系統(tǒng)而言,完成這些任務十分容易。調(diào)試器識別有關(guān)被調(diào)試程序的多任務信息并控制某一特定任務
由目標操作系統(tǒng)提供相關(guān)接口。目標系統(tǒng)根據(jù)調(diào)試器發(fā)送的關(guān)于多任務的請求,調(diào)用該接口提供相應信息或針對某一特定任務進行控制,并返回信息給調(diào)試器。調(diào)試器控制、訪問被調(diào)試程序
調(diào)試器的這類請求實際上都將轉(zhuǎn)換成調(diào)試器處理與目標硬件平臺相關(guān)的信息
第2條所述調(diào)試器應能根據(jù)異常號識別目標平臺產(chǎn)生異常的類型也屬于這一范疇,這類工作完全可以由調(diào)試器獨立完成。支持多種目標平臺正是GNUGDB的一大特色。調(diào)試器處理與目標硬件平臺相關(guān)的信息
第2條所述調(diào)試器應能根據(jù)幾種Linux內(nèi)核調(diào)試工具1、kdb:只能在匯編代碼級進行調(diào)試;
優(yōu)點是不需要兩臺機器進行調(diào)試。2、gdb:在調(diào)試模塊時缺少一些至關(guān)重要的功能,它可用來查看內(nèi)核的運行情況,包括反匯編內(nèi)核函數(shù)。3、kgdb:能很方便的在源碼級對內(nèi)核進行調(diào)試,缺點是kgdb只能進行遠程調(diào)試,它需要一根串口線及兩臺機器來調(diào)試內(nèi)核(也可以是在同一臺主機上用vmware軟件運行兩個操作系統(tǒng)來調(diào)試)幾種Linux內(nèi)核調(diào)試工具1、kdb:只能在匯編代碼級進行調(diào)GDB的使用1、GDB主要功能運行你的程序,設(shè)置所有的能影響程序運行的東西。保證你的程序在指定的條件下停止。當你程序停止時,讓你檢查發(fā)生了什么。改變你的程序。那樣你可以試著修正某個bug引起的問題,然后繼續(xù)查找另一個bug.
GDB的使用1、GDB主要功能Gdb使用舉例用一個模擬進程調(diào)度的原程序os.c作為例子說明gdb的使用方法。1、取得包括原代碼符號的可執(zhí)行代碼gcc
-g
os.c
-o
os
gcc
-g
<原文件.c>
-o
<要生成的文件名>
-g
的意思是生成帶原代碼調(diào)試符號的可執(zhí)行文件。
-o
的意思是指定可執(zhí)行文件名。Gdb使用舉例用一個模擬進程調(diào)度的原程序os.c作為例子說GDB
is
free
software
and
you
are
welcome
to
distribute
copies
of
it
under
certain
conditions;
type
"show
copying"
to
see
the
conditions.
There
is
absolutely
no
warranty
for
GDB;
type
"show
warranty"
for
details.
GDB
4.16,
Copyright
1995
Free
Software
Foundation,
Inc...
(gdb)(gdb)是提示符,在這提示符下可以輸入命令,直到退出。GDB
is
free
software
and
you
a2、設(shè)置gdb的屏幕大小。鍵入:
(gdb)set
width
70
就是把標準屏幕設(shè)為70列。3、設(shè)置斷點。設(shè)置方法:break或b后面加行號或函數(shù)名gdb)break
main或(gdb)b
main
系統(tǒng)提示:Breakpoint
1
at
0x8049552:
file
os.c,
line
455.2、設(shè)置gdb的屏幕大小。鍵入:
(g4、運行這個程序,當程序運行到main函數(shù)時程序就會停止返回到gdb的提示符下。運行的命令是run或r(gdb中有不少alias,可以看一下help,在gdb下打help)run
后面可以跟參數(shù),就是為程序指定命令行參數(shù)。顯示:
Starting
program:
<路徑>/os
Breakpoint
1,
main
()
at
os.c:455
455
Initial();
這里455
Initial();是將要執(zhí)行的命令或函數(shù)。4、運行這個程序,當程序運行到main函數(shù)時程序就會停止返回gdb提供兩種方式:1.單步進入,step
into就是跟蹤到函數(shù)內(nèi)啦。命令是step或s
2.單步,next,就是簡單的單步,不會進入函數(shù)。命令是next或n如用n命令,鍵入:
(gdb)ngdb提供兩種方式:如用n命令,鍵入:
(gdb)nCPU
:
NO
process
running
IO
:
No
process
Waiting
CPU!!!
31474
31475
31476
31477
31478
31479
Waiting
IO
NONE
456
State=WAITING;
最后的一行就是下一句要執(zhí)行的命令。現(xiàn)在在另一個函數(shù)上加斷點。注意:可以用l/list命令來顯示原代碼。(gdb)lCPU
:
NO
process
running
IO
451
main()
452
{
453
int
message;
454
455
Initial();
456
State=WAITING;
457
printf("Use
Control-C
to
halt
\n");
458
signal(SIGALRM,AlarmMessage);
459
signal(SIGINT,InteruptMessage);
460
signal(SIGUSR2,IoMessage);
(gdb)
l
461
alarm(TimeSlot);
462
for(;;)
463
{
464
message=GetMessage();
465
switch(message)
466
{
468
break;
469
case
CHILD_IO:
WaitingIo();
470
break;
451
main()
452
{
453
現(xiàn)在在AlarmMessage上加斷點。
(gdb)
b
AlarmMessage
Breakpoint
2
at
0x8048ee3:
file
os.c,
line
259.
(gdb)
然后我們繼續(xù)運行程序。
(gdb)c
c或continue命令讓我們繼續(xù)被中斷的程序。顯示:
Continuing.
Use
Control-C
to
halt
Breakpoint
2,
AlarmMessage
()
at
os.c:259
259
ClearSignal();現(xiàn)在在AlarmMessage上加斷點。(gdb)
b
A用s/step跟蹤進入這個函數(shù)看看它是干什么的。
(gdb)
s
ClearSignal
()
at
os.c:227
227
signal(SIGINT,SIG_IGN);
用l命令列出原代碼:
(gdb)
l
222
}
223
224
225
void
ClearSignal()
/*
Clear
other
signals
*/
226
{
227
signal(SIGINT,SIG_IGN);
228
signal(SIGALRM,SIG_IGN);
229
signal(SIGUSR2,SIG_IGN);
230
}
231
(gdb)用s/step跟蹤進入這個函數(shù)看看它是干什么的。
(gdb)檢查變量、表達式的值的命令是p或print
格式是p
<表達式>
如:(gdb)
p
WaitingQueue
$1
=
{1,
2,
3,
4,
5,
6,
0}
(gdb)檢查變量、表達式的值的命令是p或print
格式是p
<表達目標操作系統(tǒng)支持遠程調(diào)試協(xié)議的通信模塊(包括簡單的設(shè)備驅(qū)動)多任務調(diào)試接口改寫異常處理的有關(guān)部分定義一個設(shè)置斷點的函數(shù)目標操作系統(tǒng)支持遠程調(diào)試協(xié)議的通信模塊(包括簡單的設(shè)備驅(qū)動)目標操作系統(tǒng)添加的這些模塊統(tǒng)稱為“插樁”若駐留于ROM中則稱為ROMmonitor目標操作系統(tǒng)添加的這些模塊統(tǒng)稱為“插樁”通用操作系統(tǒng)也有具備這類模塊編譯運行于Alpha、Sparc或PowerPC平臺的LINUX內(nèi)核時若將kgdb開關(guān)打開,就相當于加入了插樁。通用操作系統(tǒng)也有具備這類模塊調(diào)試過程調(diào)試過程Stub的本質(zhì)軟件接管目標系統(tǒng)的全部異常處理(exceptionhandler)及部分中斷處理在其中插入調(diào)試端口通信模塊,與主機的調(diào)試器交互不用于正式發(fā)布的調(diào)試版Stub的本質(zhì)軟件接管目標系統(tǒng)的全部異常處理(excepti2.片上調(diào)試OnChipDebugging片上調(diào)試是在處理器內(nèi)部嵌入額外的控制模塊,當滿足了一定的觸發(fā)條件時進入某種特殊狀態(tài)在該狀態(tài)下,被調(diào)試程序停止運行,主機的調(diào)試器可以通過處理器外部特設(shè)的通信接口訪問各種資源(寄存器、存儲器等)并執(zhí)行指令。主機通信端口與目標板調(diào)試通信接口信號轉(zhuǎn)換電路板連接2.片上調(diào)試OnChipDebugging片上調(diào)試是在處PCA課件第六章嵌入式系統(tǒng)的調(diào)試講義內(nèi)嵌的控制模塊以基于微碼的監(jiān)控器(microcodemonitor)或純硬件資源的形式存在包括一些提供給用戶的接口(如斷點寄存器等)具體產(chǎn)品有MotorolaCPU16、CPU32、Coldfire系列的BDM(BackgroundDebugMode),MotorolaPowerPC5xx、8xx系列的EPBDM(EmbeddedPowerPCBackgroundDebugMode),IBM、TI的JTAG(JointTestActionDebug,IEEE標準),還有OnCE、MPSD等等。內(nèi)嵌的控制模塊以基于微碼的監(jiān)控器(microcodemonEPBDM的執(zhí)行流程相當于用處理器內(nèi)嵌的調(diào)試模塊接管中斷及異常處理。用戶通過設(shè)置調(diào)試許可寄存器(debugenableregister)來指定哪些中斷或異常發(fā)生后處理器直接進入調(diào)試狀態(tài),而不是操作系統(tǒng)的處理程序。1、進入調(diào)試狀態(tài)后,內(nèi)嵌調(diào)試模塊向外部調(diào)試通信接口發(fā)出信號,通知一直在通信接口監(jiān)聽的主機調(diào)試器2、調(diào)試器便可通過調(diào)試模塊使處理器執(zhí)行任意系統(tǒng)指令(相當于特權(quán)態(tài))。EPBDM的執(zhí)行流程相當于用處理器內(nèi)嵌的調(diào)試模塊接管中斷及異3、所有指令均通過調(diào)試模塊獲取,所有l(wèi)oad/store均直接訪問內(nèi)存,緩存(cache)及存儲管理單元(MMU)均不可用4、數(shù)據(jù)寄存器被映射為一個特殊寄存器DPDR,通過mtspr和mfspr指令訪問。5、調(diào)試器向處理器送rfi(returnfrominterrupt)指令便結(jié)束調(diào)試狀態(tài),被調(diào)試程序繼續(xù)運行。3、所有指令均通過調(diào)試模塊獲取,所有l(wèi)oad/store均OCD(片上調(diào)試)的特點優(yōu)點:不占用目標平臺的通信端口無需修改目標操作系統(tǒng)能調(diào)試目標操作系統(tǒng)的啟動過程,大大方便了系統(tǒng)開發(fā)人員。缺點:軟件工作量的增加調(diào)試器端除了需補充對目標操作系統(tǒng)多任務的識別、控制等模塊針對使用同一芯片的不同開發(fā)板編寫各類ROM、RAM的初始化程序。OCD(片上調(diào)試)的特點優(yōu)點:第6章嵌入式系統(tǒng)的調(diào)試調(diào)試器兩種遠程調(diào)試的方案第6章嵌入式系統(tǒng)的調(diào)試調(diào)試器一調(diào)試器遠程調(diào)試調(diào)試器還是運行于通用桌面操作系統(tǒng)的應用程序,被調(diào)試的程序則運行于基于特定硬件平臺的嵌入式操作系統(tǒng)(目標操作系統(tǒng))。一調(diào)試器遠程調(diào)試問題:調(diào)試器與被調(diào)試程序如何通信被調(diào)試程序產(chǎn)生異常如何及時通知調(diào)試器調(diào)試器如何控制、訪問被調(diào)試程序調(diào)試器如何識別有關(guān)被調(diào)試程序的多任務信息并控制某一特定任務調(diào)試器如何處理某些與目標硬件平臺相關(guān)的信息(如目標平臺的寄存器信息、機器代碼的反匯編等)。問題:調(diào)試器與被調(diào)試程序如何通信二兩種主要遠程調(diào)試的方案1、插樁(stub)
2、片上調(diào)試(OnChipDebugging)二兩種主要遠程調(diào)試的方案1、插樁(stub)
1、插樁(stub)
在目標操作系統(tǒng)和調(diào)試器內(nèi)分別加入某些功能模塊,二者互通信息來進行調(diào)試。1、插樁(stub)在目標操作系統(tǒng)和調(diào)試器內(nèi)分別加入某些步驟調(diào)試器與被調(diào)試程序的通信
調(diào)試器與目標操作系統(tǒng)通過指定通信端口(串口、網(wǎng)卡、并口)遵循遠程調(diào)試協(xié)議進行通信。被調(diào)試程序產(chǎn)生異常及時通知調(diào)試器
目標操作系統(tǒng)的所有異常處理最終都要轉(zhuǎn)向通信模塊,告知調(diào)試器當前的異常號;調(diào)試器據(jù)此向用戶顯示被調(diào)試程序產(chǎn)生了哪一類異常。步驟調(diào)試器與被調(diào)試程序的通信
調(diào)試器與目標操作系統(tǒng)通過指定通調(diào)試器控制、訪問被調(diào)試程序
調(diào)試器的這類請求實際上都將轉(zhuǎn)換成對被調(diào)試程序的地址空間或目標平臺的某些寄存器的訪問,目標操作系統(tǒng)接收到這樣的請求可以直接處理。對于沒有虛擬存儲概念的簡單的嵌入式操作系統(tǒng)而言,完成這些任務十分容易。調(diào)試器識別有關(guān)被調(diào)試程序的多任務信息并控制某一特定任務
由目標操作系統(tǒng)提供相關(guān)接口。目標系統(tǒng)根據(jù)調(diào)試器發(fā)送的關(guān)于多任務的請求,調(diào)用該接口提供相應信息或針對某一特定任務進行控制,并返回信息給調(diào)試器。調(diào)試器控制、訪問被調(diào)試程序
調(diào)試器的這類請求實際上都將轉(zhuǎn)換成調(diào)試器處理與目標硬件平臺相關(guān)的信息
第2條所述調(diào)試器應能根據(jù)異常號識別目標平臺產(chǎn)生異常的類型也屬于這一范疇,這類工作完全可以由調(diào)試器獨立完成。支持多種目標平臺正是GNUGDB的一大特色。調(diào)試器處理與目標硬件平臺相關(guān)的信息
第2條所述調(diào)試器應能根據(jù)幾種Linux內(nèi)核調(diào)試工具1、kdb:只能在匯編代碼級進行調(diào)試;
優(yōu)點是不需要兩臺機器進行調(diào)試。2、gdb:在調(diào)試模塊時缺少一些至關(guān)重要的功能,它可用來查看內(nèi)核的運行情況,包括反匯編內(nèi)核函數(shù)。3、kgdb:能很方便的在源碼級對內(nèi)核進行調(diào)試,缺點是kgdb只能進行遠程調(diào)試,它需要一根串口線及兩臺機器來調(diào)試內(nèi)核(也可以是在同一臺主機上用vmware軟件運行兩個操作系統(tǒng)來調(diào)試)幾種Linux內(nèi)核調(diào)試工具1、kdb:只能在匯編代碼級進行調(diào)GDB的使用1、GDB主要功能運行你的程序,設(shè)置所有的能影響程序運行的東西。保證你的程序在指定的條件下停止。當你程序停止時,讓你檢查發(fā)生了什么。改變你的程序。那樣你可以試著修正某個bug引起的問題,然后繼續(xù)查找另一個bug.
GDB的使用1、GDB主要功能Gdb使用舉例用一個模擬進程調(diào)度的原程序os.c作為例子說明gdb的使用方法。1、取得包括原代碼符號的可執(zhí)行代碼gcc
-g
os.c
-o
os
gcc
-g
<原文件.c>
-o
<要生成的文件名>
-g
的意思是生成帶原代碼調(diào)試符號的可執(zhí)行文件。
-o
的意思是指定可執(zhí)行文件名。Gdb使用舉例用一個模擬進程調(diào)度的原程序os.c作為例子說GDB
is
free
software
and
you
are
welcome
to
distribute
copies
of
it
under
certain
conditions;
type
"show
copying"
to
see
the
conditions.
There
is
absolutely
no
warranty
for
GDB;
type
"show
warranty"
for
details.
GDB
4.16,
Copyright
1995
Free
Software
Foundation,
Inc...
(gdb)(gdb)是提示符,在這提示符下可以輸入命令,直到退出。GDB
is
free
software
and
you
a2、設(shè)置gdb的屏幕大小。鍵入:
(gdb)set
width
70
就是把標準屏幕設(shè)為70列。3、設(shè)置斷點。設(shè)置方法:break或b后面加行號或函數(shù)名gdb)break
main或(gdb)b
main
系統(tǒng)提示:Breakpoint
1
at
0x8049552:
file
os.c,
line
455.2、設(shè)置gdb的屏幕大小。鍵入:
(g4、運行這個程序,當程序運行到main函數(shù)時程序就會停止返回到gdb的提示符下。運行的命令是run或r(gdb中有不少alias,可以看一下help,在gdb下打help)run
后面可以跟參數(shù),就是為程序指定命令行參數(shù)。顯示:
Starting
program:
<路徑>/os
Breakpoint
1,
main
()
at
os.c:455
455
Initial();
這里455
Initial();是將要執(zhí)行的命令或函數(shù)。4、運行這個程序,當程序運行到main函數(shù)時程序就會停止返回gdb提供兩種方式:1.單步進入,step
into就是跟蹤到函數(shù)內(nèi)啦。命令是step或s
2.單步,next,就是簡單的單步,不會進入函數(shù)。命令是next或n如用n命令,鍵入:
(gdb)ngdb提供兩種方式:如用n命令,鍵入:
(gdb)nCPU
:
NO
process
running
IO
:
No
process
Waiting
CPU!!!
31474
31475
31476
31477
31478
31479
Waiting
IO
NONE
456
State=WAITING;
最后的一行就是下一句要執(zhí)行的命令。現(xiàn)在在另一個函數(shù)上加斷點。注意:可以用l/list命令來顯示原代碼。(gdb)lCPU
:
NO
process
running
IO
451
main()
452
{
453
int
message;
454
455
Initial();
456
State=WAITING;
457
printf("Use
Control-C
to
halt
\n");
458
signal(SIGALRM,AlarmMessage);
459
signal(SIGINT,InteruptMessage);
460
signal(SIGUSR2,IoMessage);
(gdb)
l
461
alarm(TimeSlot);
462
for(;;)
463
{
464
message=GetMessage();
465
switch(message)
466
{
468
break;
469
case
CHILD_IO:
WaitingIo();
470
break;
451
main()
452
{
453
現(xiàn)在在AlarmMessage上加斷點。
(gdb)
b
AlarmMessage
Breakpoint
2
at
0x8048ee3:
file
os.c,
line
259.
(gdb)
然后我們繼續(xù)運行程序。
(gdb)c
c或continue命令讓我們繼續(xù)被中斷的程序。顯示:
Continuing.
Use
Control-C
to
halt
Breakpoint
2,
AlarmMessage
()
at
os.c:259
259
ClearSignal();現(xiàn)在在AlarmMessage上加斷點。(gdb)
b
A用s/step跟蹤進入這個函數(shù)看看它是干什么的。
(gdb)
s
ClearSignal
()
at
os.c:227
227
signal(SIGINT,SIG_IGN);
用l命令列出原代碼:
(gdb)
l
222
}
223
224
225
void
ClearSignal()
/*
Clear
other
signals
*/
226
{
227
signal(SIGINT,SIG_IGN);
228
signal(SIGALRM,SIG_IGN);
229
signal(SIGUSR2,SIG_IGN);
230
}
231
(gdb)用s/step跟蹤進入這個函數(shù)看看它是干什么的。
(gdb)檢查變量、表達式的值的命令是p或print
格式是p
<表達式>
如:(gdb)
p
WaitingQueue
$1
=
{1,
2,
3,
4,
5,
6,
0}
(gdb)檢查變量、表達式的值的命令是p或print
格式是p
<表達目標操作系統(tǒng)支持遠程調(diào)試協(xié)議的通信模塊(包括簡單的設(shè)備驅(qū)動)多任務調(diào)試接口改寫異常處理的有關(guān)部分定義一個設(shè)置斷點的函數(shù)目標操作系統(tǒng)支持遠程調(diào)試協(xié)議的通信模塊(包括簡單的設(shè)備驅(qū)動)目標操作系統(tǒng)添加的這些模塊統(tǒng)稱為“插樁”若駐留于ROM中則稱為ROMmonitor目標操作系統(tǒng)添加的這些模塊統(tǒng)稱為“插樁”通用操作系統(tǒng)也有具備這類模塊編譯運行于Alpha、Sparc或PowerPC平臺的LINUX內(nèi)核時若將kgdb開關(guān)打開,就相當于加入了插樁。通用操作系統(tǒng)也有具備這類模塊調(diào)試過程調(diào)試過程Stub的本質(zhì)軟件接管目標系統(tǒng)的全部異常處理(exceptionhandler)及部分中斷處理在其中插入調(diào)試端口通信模塊,與主機的調(diào)試器交
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 福州市七上期末數(shù)學試卷
- 高招提前招生數(shù)學試卷
- 高中定積分數(shù)學試卷
- 高新區(qū)二診數(shù)學試卷
- 福田六年級數(shù)學試卷
- 設(shè)備安全培訓課件
- 2025至2030代駕行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 2025至2030船用消防設(shè)備行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 2025至2030廣告設(shè)計制作產(chǎn)業(yè)市場深度調(diào)研及發(fā)展趨勢與發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030不銹鋼欄桿行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025年變電站春季安全生產(chǎn)自查報告
- 充電樁充電服務與充電站安全保障合同
- 2025至2030汽車車輪行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 個人信息保護合規(guī)審計師CCRC-PIPCA含答案
- 供應商黑名單管理制度
- 陰道松弛激光治療
- 2025至2030年中國電商導購行業(yè)市場運營態(tài)勢及投資前景趨勢報告
- 2025鄂爾多斯達拉特旗智杰教育投資有限責任公司面向社會招聘10名工作人員筆試參考題庫附帶答案詳解析集合
- 2025中考英語考前熱身卷(常州卷)(解析版)
- GB 9706.283-2022醫(yī)用電氣設(shè)備第2-83部分:家用光治療設(shè)備的基本安全和基本性能專用要求
- T/CACE 009-2017清潔生產(chǎn)管理體系要求
評論
0/150
提交評論