crash on a QT GUI Project

Hi Expert,

I'm working on a QT GUI Project and I have the main screen containing three columns populated by a ListView of UPnP data.

I would like insert a small "delete" icon before each column line with the purpose to delete this line when the user click this delete button. To delete the line I have to use a destroyobject API and this works. After the destruction I call an updatecolum function to refresh the column. Unfortunately, this update function give me a crash and stop the QT project.
I tried to to a QT debug and I get the error relative the \tmov (%edx),%eax. In particular, I get the errors "XXX: BLOCK IN FRAME NOT ACCESSIBLE: Cannot locate object file for block." and "dDISCARDING JUNK AT BEGIN OF RESPONSE: XXX: BLOCK IN FRAME NOT ACCESSIBLE: Cannot locate object file for block.".

Here is the debug error:

>&"disassemble 0xb6f62430\n"
>~"Dump of assembler code for function _ZN4QUrlaSERKS_:\n"
>~" 0xb6f62200 <+0>:\tsub $0x2c,%esp\n"
>~" 0xb6f62203 <+3>:\tmov %edi,0x24(%esp)\n"
>~" 0xb6f62207 <+7>:\tmov 0x30(%esp),%edi\n"
>~" 0xb6f6220b <+11>:\tmov %ebx,0x1c(%esp)\n"
>~" 0xb6f6220f <+15>:\tmov 0x34(%esp),%edx\n"
>~" 0xb6f62213 <+19>:\tmov %esi,0x20(%esp)\n"
>~" 0xb6f62217 <+23>:\tmov %ebp,0x28(%esp)\n"
>~" 0xb6f6221b <+27>:\tmov (%edi),%eax\n"
>~" 0xb6f6221d <+29>:\tcall 0xb6e8f9f7\n"
>~" 0xb6f62222 <+34>:\tadd $0x17ddd2,%ebx\n"
>~" 0xb6f62228 <+40>:\ttest %eax,%eax\n"
>~" 0xb6f6222a <+42>:\tje 0xb6f62430 <_ZN4QUrlaSERKS_+560>\n"
>~" 0xb6f62230 <+48>:\tmov (%edx),%ebp\n"
>~" 0xb6f62232 <+50>:\ttest %ebp,%ebp\n"
>~" 0xb6f62234 <+52>:\tje 0xb6f62420 <_ZN4QUrlaSERKS_+544>\n"
>~" 0xb6f6223a <+58>:\tcmp %ebp,%eax\n"
>~" 0xb6f6223c <+60>:\tje 0xb6f6233a <_ZN4QUrlaSERKS_+314>\n"
>~" 0xb6f62242 <+66>:\tlock incl 0x0(%ebp)\n"
>~" 0xb6f62246 <+70>:\tsetne %al\n"
>~" 0xb6f62249 <+73>:\tmov (%edi),%eax\n"
>~" 0xb6f6224b <+75>:\tlock decl (%eax)\n"
>~" 0xb6f6224e <+78>:\tsetne %dl\n"
>~" 0xb6f62251 <+81>:\ttest %dl,%dl\n"
>~" 0xb6f62253 <+83>:\tjne 0xb6f62338 <_ZN4QUrlaSERKS_+312>\n"
>~" 0xb6f62259 <+89>:\tmov (%edi),%esi\n"
>~" 0xb6f6225b <+91>:\ttest %esi,%esi\n"
>~" 0xb6f6225d <+93>:\tje 0xb6f62338 <_ZN4QUrlaSERKS_+312>\n"
>~" 0xb6f62263 <+99>:\tmov 0x48(%esi),%eax\n"
>~" 0xb6f62266 <+102>:\tlock decl (%eax)\n"
>~" 0xb6f62269 <+105>:\tsetne %dl\n"
>~" 0xb6f6226c <+108>:\ttest %dl,%dl\n"
>~" 0xb6f6226e <+110>:\tje 0xb6f62410 <_ZN4QUrlaSERKS_+528>\n"
>~" 0xb6f62274 <+116>:\tmov 0x30(%esi),%eax\n"
>~" 0xb6f62277 <+119>:\tlock decl (%eax)\n"
>~" 0xb6f6227a <+122>:\tsetne %dl\n"
>~" 0xb6f6227d <+125>:\ttest %dl,%dl\n"
>~" 0xb6f6227f <+127>:\tje 0xb6f62400 <_ZN4QUrlaSERKS_+512>\n"
>~" 0xb6f62285 <+133>:\tmov 0x2c(%esi),%eax\n"
>~" 0xb6f62288 <+136>:\tlock decl (%eax)\n"
>~" 0xb6f6228b <+139>:\tsetne %dl\n"
>~" 0xb6f6228e <+142>:\ttest %dl,%dl\n"
>~" 0xb6f62290 <+144>:\tje 0xb6f623f0 <_ZN4QUrlaSERKS_+496>\n"
>~" 0xb6f62296 <+150>:\tmov 0x28(%esi),%eax\n"
>~" 0xb6f62299 <+153>:\tlock decl (%eax)\n"
>~" 0xb6f6229c <+156>:\tsetne %dl\n"
>~" 0xb6f6229f <+159>:\ttest %dl,%dl\n"
>~" 0xb6f622a1 <+161>:\tje 0xb6f623e0 <_ZN4QUrlaSERKS_+480>\n"
>~" 0xb6f622a7 <+167>:\tmov 0x24(%esi),%eax\n"
>~" 0xb6f622aa <+170>:\tlock decl (%eax)\n"
>~" 0xb6f622ad <+173>:\tsetne %dl\n"
>~" 0xb6f622b0 <+176>:\ttest %dl,%dl\n"
>~" 0xb6f622b2 <+178>:\tje 0xb6f623d0 <_ZN4QUrlaSERKS_+464>\n"
>~" 0xb6f622b8 <+184>:\tmov 0x20(%esi),%eax\n"
>~" 0xb6f622bb <+187>:\tlock decl (%eax)\n"
>~" 0xb6f622be <+190>:\tsetne %dl\n"
>~" 0xb6f622c1 <+193>:\ttest %dl,%dl\n"
>~" 0xb6f622c3 <+195>:\tje 0xb6f623c0 <_ZN4QUrlaSERKS_+448>\n"
>~" 0xb6f622c9 <+201>:\tmov 0x1c(%esi),%eax\n"
>~" 0xb6f622cc <+204>:\tlock decl (%eax)\n"
>~" 0xb6f622cf <+207>:\tsetne %dl\n"
>~" 0xb6f622d2 <+210>:\ttest %dl,%dl\n"
>~" 0xb6f622d4 <+212>:\tje 0xb6f623b0 <_ZN4QUrlaSERKS_+432>\n"
>~" 0xb6f622da <+218>:\tmov 0x18(%esi),%eax\n"
>~" 0xb6f622dd <+221>:\tlock decl (%eax)\n"
>~" 0xb6f622e0 <+224>:\tsetne %dl\n"
>~" 0xb6f622e3 <+227>:\ttest %dl,%dl\n"
>~" 0xb6f622e5 <+229>:\tje 0xb6f623a0 <_ZN4QUrlaSERKS_+416>\n"
>~" 0xb6f622eb <+235>:\tmov 0x14(%esi),%eax\n"
>~" 0xb6f622ee <+238>:\tlock decl (%eax)\n"
>~" 0xb6f622f1 <+241>:\tsetne %dl\n"
>~" 0xb6f622f4 <+244>:\ttest %dl,%dl\n"
>~" 0xb6f622f6 <+246>:\tje 0xb6f62390 <_ZN4QUrlaSERKS_+400>\n"
>~" 0xb6f622fc <+252>:\tmov 0x10(%esi),%eax\n"
>~" 0xb6f622ff <+255>:\tlock decl (%eax)\n"
>~" 0xb6f62302 <+258>:\tsetne %dl\n"
>~" 0xb6f62305 <+261>:\ttest %dl,%dl\n"
>~" 0xb6f62307 <+263>:\tje 0xb6f62380 <_ZN4QUrlaSERKS_+384>\n"
>~" 0xb6f62309 <+265>:\tmov 0xc(%esi),%eax\n"
>~" 0xb6f6230c <+268>:\tlock decl (%eax)\n"
>~" 0xb6f6230f <+271>:\tsetne %dl\n"
>~" 0xb6f62312 <+274>:\ttest %dl,%dl\n"
>~" 0xb6f62314 <+276>:\tje 0xb6f62370 <_ZN4QUrlaSERKS_+368>\n"
>~" 0xb6f62316 <+278>:\tmov 0x8(%esi),%eax\n"
>~" 0xb6f62319 <+281>:\tlock decl (%eax)\n"
>~" 0xb6f6231c <+284>:\tsetne %dl\n"
>~" 0xb6f6231f <+287>:\ttest %dl,%dl\n"
>~" 0xb6f62321 <+289>:\tje 0xb6f62360 <_ZN4QUrlaSERKS_+352>\n"
>~" 0xb6f62323 <+291>:\tmov 0x4(%esi),%eax\n"
>~" 0xb6f62326 <+294>:\tlock decl (%eax)\n"
>~" 0xb6f62329 <+297>:\tsetne %dl\n"
>~" 0xb6f6232c <+300>:\ttest %dl,%dl\n"
>~" 0xb6f6232e <+302>:\tje 0xb6f62350 <_ZN4QUrlaSERKS_+336>\n"
>~" 0xb6f62330 <+304>:\tmov %esi,(%esp)\n"
>~" 0xb6f62333 <+307>:\tcall 0xb6e8b480 <_ZdlPv@plt>\n"
>~" 0xb6f62338 <+312>:\tmov %ebp,(%edi)\n"
>~" 0xb6f6233a <+314>:\tmov %edi,%eax\n"
>~" 0xb6f6233c <+316>:\tmov 0x1c(%esp),%ebx\n"
>~" 0xb6f62340 <+320>:\tmov 0x20(%esp),%esi\n"
>~" 0xb6f62344 <+324>:\tmov 0x24(%esp),%edi\n"
>~" 0xb6f62348 <+328>:\tmov 0x28(%esp),%ebp\n"
>~" 0xb6f6234c <+332>:\tadd $0x2c,%esp\n"
>~" 0xb6f6234f <+335>:\tret \n"
>~" 0xb6f62350 <+336>:\tmov 0x4(%esi),%eax\n"
>~" 0xb6f62353 <+339>:\tmov %eax,(%esp)\n"
>~" 0xb6f62356 <+342>:\tcall 0xb6e8f4e0 <_ZN7QString4freeEPNS_4DataE@plt>\n"
>~" 0xb6f6235b <+347>:\tjmp 0xb6f62330 <_ZN4QUrlaSERKS_+304>\n"
>~" 0xb6f6235d <+349>:\tlea 0x0(%esi),%esi\n"
>~" 0xb6f62360 <+352>:\tmov 0x8(%esi),%eax\n"
>~" 0xb6f62363 <+355>:\tmov %eax,(%esp)\n"
>~" 0xb6f62366 <+358>:\tcall 0xb6e8f4e0 <_ZN7QString4freeEPNS_4DataE@plt>\n"
>~" 0xb6f6236b <+363>:\tjmp 0xb6f62323 <_ZN4QUrlaSERKS_+291>\n"
>~" 0xb6f6236d <+365>:\tlea 0x0(%esi),%esi\n"
>~" 0xb6f62370 <+368>:\tmov 0xc(%esi),%eax\n"
>~" 0xb6f62373 <+371>:\tmov %eax,(%esp)\n"
>~" 0xb6f62376 <+374>:\tcall 0xb6e8f4e0 <_ZN7QString4freeEPNS_4DataE@plt>\n"
>~" 0xb6f6237b <+379>:\tjmp 0xb6f62316 <_ZN4QUrlaSERKS_+278>\n"
>~" 0xb6f6237d <+381>:\tlea 0x0(%esi),%esi\n"
>~" 0xb6f62380 <+384>:\tmov 0x10(%esi),%eax\n"
>~" 0xb6f62383 <+387>:\tmov %eax,(%esp)\n"
>~" 0xb6f62386 <+390>:\tcall 0xb6e8f4e0 <_ZN7QString4freeEPNS_4DataE@plt>\n"
>~" 0xb6f6238b <+395>:\tjmp 0xb6f62309 <_ZN4QUrlaSERKS_+265>\n"
>~" 0xb6f62390 <+400>:\tmov 0x14(%esi),%eax\n"
>~" 0xb6f62393 <+403>:\tmov %eax,(%esp)\n"
>~" 0xb6f62396 <+406>:\tcall 0xb6e8f4e0 <_ZN7QString4freeEPNS_4DataE@plt>\n"
>~" 0xb6f6239b <+411>:\tjmp 0xb6f622fc <_ZN4QUrlaSERKS_+252>\n"
>~" 0xb6f623a0 <+416>:\tmov 0x18(%esi),%eax\n"
>~" 0xb6f623a3 <+419>:\tmov %eax,(%esp)\n"
>~" 0xb6f623a6 <+422>:\tcall 0xb6e8c510 <_Z5qFreePv@plt>\n"
>~" 0xb6f623ab <+427>:\tjmp 0xb6f622eb <_ZN4QUrlaSERKS_+235>\n"
>~" 0xb6f623b0 <+432>:\tmov 0x1c(%esi),%eax\n"
>~" 0xb6f623b3 <+435>:\tmov %eax,(%esp)\n"
>~" 0xb6f623b6 <+438>:\tcall 0xb6e8f4e0 <_ZN7QString4freeEPNS_4DataE@plt>\n"
>~" 0xb6f623bb <+443>:\tjmp 0xb6f622da <_ZN4QUrlaSERKS_+218>\n"
>~" 0xb6f623c0 <+448>:\tmov 0x20(%esi),%eax\n"
>~" 0xb6f623c3 <+451>:\tmov %eax,(%esp)\n"
>~" 0xb6f623c6 <+454>:\tcall 0xb6e8c510 <_Z5qFreePv@plt>\n"
>~" 0xb6f623cb <+459>:\tjmp 0xb6f622c9 <_ZN4QUrlaSERKS_+201>\n"
>~" 0xb6f623d0 <+464>:\tmov 0x24(%esi),%eax\n"
>~" 0xb6f623d3 <+467>:\tmov %eax,(%esp)\n"
>~" 0xb6f623d6 <+470>:\tcall 0xb6e8c510 <_Z5qFreePv@plt>\n"
>~" 0xb6f623db <+475>:\tjmp 0xb6f622b8 <_ZN4QUrlaSERKS_+184>\n"
>~" 0xb6f623e0 <+480>:\tmov 0x28(%esi),%eax\n"
>~" 0xb6f623e3 <+483>:\tmov %eax,(%esp)\n"
>~" 0xb6f623e6 <+486>:\tcall 0xb6e8c510 <_Z5qFreePv@plt>\n"
>~" 0xb6f623eb <+491>:\tjmp 0xb6f622a7 <_ZN4QUrlaSERKS_+167>\n"
>~" 0xb6f623f0 <+496>:\tmov 0x2c(%esi),%eax\n"
>~" 0xb6f623f3 <+499>:\tmov %eax,(%esp)\n"
>~" 0xb6f623f6 <+502>:\tcall 0xb6e8c510 <_Z5qFreePv@plt>\n"
>~" 0xb6f623fb <+507>:\tjmp 0xb6f62296 <_ZN4QUrlaSERKS_+150>\n"
>~" 0xb6f62400 <+512>:\tmov 0x30(%esi),%eax\n"
>~" 0xb6f62403 <+515>:\tmov %eax,(%esp)\n"
>~" 0xb6f62406 <+518>:\tcall 0xb6e8c510 <_Z5qFreePv@plt>\n"
>~" 0xb6f6240b <+523>:\tjmp 0xb6f62285 <_ZN4QUrlaSERKS_+133>\n"
>~" 0xb6f62410 <+528>:\tmov 0x48(%esi),%eax\n"
>~" 0xb6f62413 <+531>:\tmov %eax,(%esp)\n"
>~" 0xb6f62416 <+534>:\tcall 0xb6e8c510 <_Z5qFreePv@plt>\n"
>~" 0xb6f6241b <+539>:\tjmp 0xb6f62274 <_ZN4QUrlaSERKS_+116>\n"
>~" 0xb6f62420 <+544>:\tmov %edi,(%esp)\n"
>~" 0xb6f62423 <+547>:\tcall 0xb6e8e000 <_ZN4QUrl5clearEv@plt>\n"
>~" 0xb6f62428 <+552>:\tjmp 0xb6f6233a <_ZN4QUrlaSERKS_+314>\n"
>~" 0xb6f6242d <+557>:\tlea 0x0(%esi),%esi\n"
>~"=> 0xb6f62430 <+560>:\tmov (%edx),%eax\n"
>~" 0xb6f62432 <+562>:\ttest %eax,%eax\n"
>~" 0xb6f62434 <+564>:\tje 0xb6f6233a <_ZN4QUrlaSERKS_+314>\n"
>~" 0xb6f6243a <+570>:\tlock incl (%eax)\n"
>~" 0xb6f6243d <+573>:\tsetne %cl\n"
>~" 0xb6f62440 <+576>:\tmov (%edx),%eax\n"
>~" 0xb6f62442 <+578>:\tmov %eax,(%edi)\n"
>~" 0xb6f62444 <+580>:\tjmp 0xb6f6233a <_ZN4QUrlaSERKS_+314>\n"
>~" 0xb6f62449 <+585>:\tmov %eax,%edi\n"
>~" 0xb6f6244b <+587>:\tadd $0x4,%esi\n"
>~" 0xb6f6244e <+590>:\tmov %esi,(%esp)\n"
>~" 0xb6f62451 <+593>:\tcall 0xb6e969b0\n"
>~" 0xb6f62456 <+598>:\tmov %edi,(%esp)\n"
>~" 0xb6f62459 <+601>:\tcall 0xb6e8e6c0 <_Unwind_Resume@plt>\n"
>~" 0xb6f6245e <+606>:\tmov %eax,%edi\n"
>~" 0xb6f62460 <+608>:\tlea 0x30(%esi),%eax\n"
>~" 0xb6f62463 <+611>:\tmov %eax,(%esp)\n"
>~" 0xb6f62466 <+614>:\tcall 0xb6e91c10\n"
>~" 0xb6f6246b <+619>:\tlea 0x2c(%esi),%eax\n"
>~" 0xb6f6246e <+622>:\tmov %eax,(%esp)\n"
>~" 0xb6f62471 <+625>:\tcall 0xb6e91c10\n"
>~" 0xb6f62476 <+630>:\tlea 0x28(%esi),%eax\n"
>~" 0xb6f62479 <+633>:\tmov %eax,(%esp)\n"
>~" 0xb6f6247c <+636>:\tcall 0xb6e91c10\n"
>~" 0xb6f62481 <+641>:\tlea 0x24(%esi),%eax\n"
>~" 0xb6f62484 <+644>:\tmov %eax,(%esp)\n"
>~" 0xb6f62487 <+647>:\tcall 0xb6e91c10\n"
>~" 0xb6f6248c <+652>:\tlea 0x20(%esi),%eax\n"
>~" 0xb6f6248f <+655>:\tmov %eax,(%esp)\n"
>~" 0xb6f62492 <+658>:\tcall 0xb6e91c10\n"
>~" 0xb6f62497 <+663>:\tlea 0x1c(%esi),%eax\n"
>~" 0xb6f6249a <+666>:\tmov %eax,(%esp)\n"
>~" 0xb6f6249d <+669>:\tcall 0xb6e969b0\n"
>~" 0xb6f624a2 <+674>:\tlea 0x18(%esi),%eax\n"
>~" 0xb6f624a5 <+677>:\tmov %eax,(%esp)\n"
>~" 0xb6f624a8 <+680>:\tcall 0xb6e91c10\n"
>~" 0xb6f624ad <+685>:\tlea 0x14(%esi),%eax\n"
>~" 0xb6f624b0 <+688>:\tmov %eax,(%esp)\n"
>~" 0xb6f624b3 <+691>:\tcall 0xb6e969b0\n"
>~" 0xb6f624b8 <+696>:\tlea 0x10(%esi),%eax\n"
>~" 0xb6f624bb <+699>:\tmov %eax,(%esp)\n"
>~" 0xb6f624be <+702>:\tcall 0xb6e969b0\n"
>~" 0xb6f624c3 <+707>:\tlea 0xc(%esi),%eax\n"
>~" 0xb6f624c6 <+710>:\tmov %eax,(%esp)\n"
>~" 0xb6f624c9 <+713>:\tcall 0xb6e969b0\n"
>~" 0xb6f624ce <+718>:\tlea 0x8(%esi),%eax\n"
>~" 0xb6f624d1 <+721>:\tmov %eax,(%esp)\n"
>~" 0xb6f624d4 <+724>:\tcall 0xb6e969b0\n"
>~" 0xb6f624d9 <+729>:\tjmp 0xb6f6244b <_ZN4QUrlaSERKS_+587>\n"
>~" 0xb6f624de <+734>:\tmov %eax,%edi\n"
>~" 0xb6f624e0 <+736>:\tjmp 0xb6f6246b <_ZN4QUrlaSERKS_+619>\n"
>~" 0xb6f624e2 <+738>:\tmov %eax,%edi\n"
>~" 0xb6f624e4 <+740>:\tjmp 0xb6f62476 <_ZN4QUrlaSERKS_+630>\n"
>~" 0xb6f624e6 <+742>:\tmov %eax,%edi\n"
>~" 0xb6f624e8 <+744>:\tjmp 0xb6f62481 <_ZN4QUrlaSERKS_+641>\n"
>~" 0xb6f624ea <+746>:\tmov %eax,%edi\n"
>~" 0xb6f624ec <+748>:\tlea 0x0(%esi,%eiz,1),%esi\n"
>~" 0xb6f624f0 <+752>:\tjmp 0xb6f6248c <_ZN4QUrlaSERKS_+652>\n"
>~" 0xb6f624f2 <+754>:\tmov %eax,%edi\n"
>~" 0xb6f624f4 <+756>:\tjmp 0xb6f62497 <_ZN4QUrlaSERKS_+663>\n"
>~" 0xb6f624f6 <+758>:\tmov %eax,%edi\n"
>~" 0xb6f624f8 <+760>:\tjmp 0xb6f624a2 <_ZN4QUrlaSERKS_+674>\n"
>~" 0xb6f624fa <+762>:\tmov %eax,%edi\n"
>~" 0xb6f624fc <+764>:\tlea 0x0(%esi,%eiz,1),%esi\n"
>~" 0xb6f62500 <+768>:\tjmp 0xb6f624ad <_ZN4QUrlaSERKS_+685>\n"
>~" 0xb6f62502 <+770>:\tmov %eax,%edi\n"
>~" 0xb6f62504 <+772>:\tjmp 0xb6f624b8 <_ZN4QUrlaSERKS_+696>\n"
>~" 0xb6f62506 <+774>:\tmov %eax,%edi\n"
>~" 0xb6f62508 <+776>:\tjmp 0xb6f624c3 <_ZN4QUrlaSERKS_+707>\n"
>~" 0xb6f6250a <+778>:\tmov %eax,%edi\n"
>~" 0xb6f6250c <+780>:\tlea 0x0(%esi,%eiz,1),%esi\n"
>~" 0xb6f62510 <+784>:\tjmp 0xb6f624ce <_ZN4QUrlaSERKS_+718>\n"
>~"End of assembler dump.\n"
>2923^done
>&"bb options:autoderef vars: expanded:local.col,local.prevCol,local.prevCol.m_items,local.this,local.prevCol.m_name,local.this.stream,local.pbrowse_results typeformats: formats: watchers:\n"
>~"XXX: BLOCK IN FRAME NOT ACCESSIBLE: Cannot locate object file for block.\n"
>~"\n"
>~"data=[,]\n"
>2924^done
dDISCARDING JUNK AT BEGIN OF RESPONSE: XXX: BLOCK IN FRAME NOT ACCESSIBLE: Cannot locate object file for block.

Do you have any idea why it happens?

Thanks in advance for your collaboration.

Francesco
fmeoAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

sarabandeCommented:
i think you cannot 'update' a columns with 'destroyed' lines cause all those items were pointing to deleted or at least invalid data.

i would assume you need to remove the destroyed row from list before calling the update function. i also would assume that when removing the row from list, the QT framework work would destroy the items without your help. at least, that should be valid for all items beside of the 'delete' icon you added.

Sara
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Assembly

From novice to tech pro — start learning today.