એકમો
1. મોબાઇલ ડેવલપમેન્ટમાં AI નો પરિચય: ભૂમિકાઓ, સીમાઓ, પ્રમાણીકરણ અને સુરક્ષા 2. આર્ટિફિશિયલ ઇન્ટેલિજન્સ સાથે મોબાઇલ કોડ જનરેશન: કોટલિન, સ્વિફ્ટ અને ક્રોસ-પ્લેટફોર્મ ડેવલપમેન્ટ 3. આર્ટિફિશિયલ ઇન્ટેલિજન્સ સાથે ઇન્ટરફેસ ડિઝાઇન અને UI કોડ જનરેશન 4. ઓન-ડિવાઈસ AI: કોર ML, TensorFlow Lite અને ML કિટ 5. Cloud AI અને LLM API એકીકરણ: ચેટ, ફ્લો અને સુરક્ષા 6. આર્ટિફિશિયલ ઈન્ટેલિજન્સ સાથે ટેસ્ટ જનરેશન: યુનિટ, ઈન્ટરફેસ અને ઓટોમેશન ટેસ્ટ 7. આર્ટિફિશિયલ ઇન્ટેલિજન્સ સાથે ડિબગિંગ અને ક્રેશ એનાલિસિસ 8. પ્રદર્શન અને બેટરી ઓપ્ટિમાઇઝેશન: કૃત્રિમ બુદ્ધિ સાથે ઝડપી અને કાર્યક્ષમ એપ્લિકેશનો 9. ગોપનીયતા, પરવાનગીઓ અને સલામત ઉપયોગ 10. સ્ટોર રિલીઝ: એપ સ્ટોર, ગૂગલ પ્લે અને એઆઈ સુસંગતતા 11. એન્ડ-ટુ-એન્ડ પ્રોજેક્ટ, કૃત્રિમ બુદ્ધિમત્તાનો જવાબદાર ઉપયોગ અને વ્યવસાયમાં રોડમેપ
એકમ 7 / 11

આર્ટિફિશિયલ ઇન્ટેલિજન્સ સાથે ડિબગિંગ અને ક્રેશ એનાલિસિસ

નફો:

  • સંબંધિત કોડ અને દૃશ્ય સંદર્ભ સાથે કૃત્રિમ બુદ્ધિમત્તાને ક્રેશ રેકોર્ડ્સ (સ્ટેક ટ્રેસ) આપીને સંભવિત મૂળ કારણોને ઝડપથી સંકુચિત કરવાની ક્ષમતા
  • AI ના નિદાનને કોડમાં પૂર્વધારણા તરીકે માન્ય કરવાને બદલે મૂળ કારણને કાયમી ધોરણે ઉકેલવાની ક્ષમતા અને લક્ષણનું પરીક્ષણ અને મૌન
  • ક્રેશ રેકોર્ડ્સ અને લૉગ્સમાં વ્યક્તિગત ડેટાને માસ્ક કરીને ડિબગ કરતી વખતે ગોપનીયતાનું રક્ષણ કરવું

દરેક એપ્લિકેશન ભૂલો આપે છે; સારા ડેવલપરને શું અલગ પડે છે કે તેઓ કેટલી ઝડપથી બગ્સ શોધી અને ઠીક કરે છે. મોબાઇલ ડિબગીંગ — સમસ્યાના સ્ત્રોતને શોધવું અને તેને ઠીક કરવું — ખાસ કરીને મુશ્કેલ છે કારણ કે ભૂલ વપરાશકર્તાના ઉપકરણ પર થાય છે, એવા વાતાવરણમાં જે તમે જોઈ શકતા નથી. મોટા ભાગના સમયે, તમારી પાસે માત્ર એક ક્રેશ લોગ હોય છે (ક્રેશ લોગ / સ્ટેક ટ્રેસ — જ્યારે એપ્લિકેશન ક્રેશ થઈ ત્યારે તે ક્યાં ગઈ તેનું ટેકનિકલ ભંગાણ). AI આ ગુપ્ત રેકોર્ડ્સ વાંચવામાં, સંભવિત કારણોની સૂચિબદ્ધ કરવા અને ઉકેલો પ્રસ્તાવિત કરવામાં અત્યંત શક્તિશાળી છે. આ એકમમાં આપણે શીખીશું કે કેવી રીતે AI નો ઉપયોગ "બગ ડિટેક્ટીવ" તરીકે કરવો પણ અંતિમ નિદાન અને તેને ઠીક કરવાની જવાબદારી તમારા પર છોડી દઈએ.

ક્રેશ લોગ વાંચવું: જ્યાં AI સૌથી વધુ ચમકે છે

ક્રેશ લોગ એ એક લાંબો અને ડરાવતો લખાણ છે; બિનઅનુભવી વિકાસકર્તા ક્યાં જોવું તે જાણતા નથી. AI આ ટેક્સ્ટને સેકન્ડોમાં પાર્સ કરે છે: તે કઈ લાઇન પર ક્રેશ થયું, કયો અપવાદ ફેંકવામાં આવ્યો, સંભવિત કારણ શું છે. સામાન્ય મોબાઇલ ભૂલો સ્પષ્ટ છે અને AI તેમને ઝડપથી ઓળખે છે: NullPointerException (નલ મૂલ્યને ઍક્સેસ કરવાનો પ્રયાસ કરી રહ્યો છે), Android પર IndexOutOfBoundsException (અસ્તિત્વમાં ન હોય તેવા સૂચિ ઘટકને ઍક્સેસ કરવું), iOS પર EXC_BAD_ACCESS (મુક્ત મેમરીને ઍક્સેસ કરવી), iOS પર અણધાર્યો વિકલ્પ મળ્યો (અનપેક્ષિત રીતે).

મોબાઇલ ક્રેશના સૌથી સામાન્ય પ્રકારો અને તેના લાક્ષણિક કારણો નીચે મુજબ છે:

ભૂલ (અપવાદ)

પ્લેટફોર્મ

લાક્ષણિક કારણ

NullPointerException

એન્ડ્રોઇડ

શૂન્ય મૂલ્યને ઍક્સેસ કરવું

IndexOutOfBoundsException

એન્ડ્રોઇડ

અવિદ્યમાન સૂચિ ઘટકને ઍક્સેસ કરી રહ્યું છે

અનપેક્ષિત રીતે શૂન્ય મળ્યું

iOS

શૂન્ય વૈકલ્પિક (!)

EXC_BAD_ACCESS

iOS

મુક્ત મેમરીને ઍક્સેસ કરી રહ્યું છે

ANR/ફ્રીઝ

એન્ડ્રોઇડ

મુખ્ય થ્રેડ પર લાંબી/ભારે પ્રક્રિયા

સ્ટેપ બાય સ્ટેપ ડીબગીંગ ફ્લો:

  1. રેકોર્ડ એકત્રિત કરો. ક્રેશ લોગ, ભૂલ સંદેશ, અને જો શક્ય હોય તો તેને પુનઃઉત્પાદિત કરવાનાં પગલાંને એકસાથે મૂકો.
  2. AI સંદર્ભ આપો. મને ફક્ત ભૂલ જ નહીં, પરંતુ કોડનો સંબંધિત ભાગ અને તે શું કરવાથી ક્રેશ થયું તે જણાવો.
  3. સંભવિત કારણો માટે પૂછો. "મને 3 સંભવિત કારણો અને દરેકને કેવી રીતે ચકાસવું તે જણાવો."
  4. ચકાસો. કોડ અને પરીક્ષણમાં સૂચિત કારણની પુષ્ટિ કરો; અનુમાન લગાવીને તેને ઠીક કરશો નહીં.
  5. તેને ઠીક કરો અને ફરીથી પરીક્ષણ કરો. તપાસો કે ભૂલ ખરેખર દૂર થઈ ગઈ છે અને કોઈ નવી ભૂલો જનરેટ થઈ નથી.
ટીપ: AI ને ક્રેશ લોગ આપતી વખતે, સંબંધિત કોડ સ્નિપેટનો પણ સમાવેશ કરો. માત્ર સ્ટેક ટ્રેસ સાથે AI સામાન્ય આગાહી કરે છે; જ્યારે તમે કોડ જુઓ છો, ત્યારે ચોક્કસ લાઇન અને વાસ્તવિક કારણ શોધવાની સંભાવના ખૂબ વધી જાય છે. સંદર્ભ નિદાનની ગુણવત્તા નક્કી કરે છે.

વ્યક્તિગત ડેટા ટ્રેપ

ક્રેશ લૉગ્સ અને લૉગ્સમાં ઘણીવાર વપરાશકર્તા ડેટા હોય છે: ઇમેઇલ, વપરાશકર્તા ID, સ્થાન, ફોર્મ સામગ્રી પણ. આ રેકોર્ડને AI માં પેસ્ટ કરવો એ તૃતીય પક્ષને વ્યક્તિગત ડેટા લીક કરે છે અને KVKK/GDPRનું ઉલ્લંઘન છે. રેકોર્ડિંગ સબમિટ કરતા પહેલા વ્યક્તિગત વિસ્તારોને સાફ કરો (માસ્ક). ઉપરાંત, શરૂઆતથી તમારી એપ્લિકેશનના લોગમાં વ્યક્તિગત ડેટા ન લખવા માટે સાવચેત રહો; સારો લોગ સમસ્યાનું વર્ણન કરે છે પરંતુ ઓળખ છતી કરતું નથી.

સાવચેતી: AI દ્વારા સૂચવવામાં આવેલ ફિક્સ "બગને શાંત" કરી શકે છે પરંતુ મૂળ કારણને હલ કરી શકશે નહીં. ઉદાહરણ તરીકે, NullPointerException ને નલ ચેક સાથે વીંટાળવાથી ક્રેશ અટકી જશે, પરંતુ જો તમે સમજી શકતા નથી કે મૂલ્ય શા માટે નલ છે તો વાસ્તવિક તર્ક ભૂલ ચાલુ રહેશે. રોગની સારવાર કરો, લક્ષણની નહીં.

મૂળ કારણ વિશ્લેષણ

વ્યવસાયિક ડિબગીંગનો ઉદ્દેશ્ય ભૂલને શાંત કરવાનો નથી પરંતુ મૂળ કારણ શોધવાનો છે. મેં AI ને પૂછ્યું "કેમ આ શૂન્ય હોઈ શકે, તે ડેટા ફ્લોમાં ક્યાં ખોવાઈ ગયું હશે?" પૂછ્યું, "હું આને કેવી રીતે મૌન કરું?" તે પૂછવા કરતાં વધુ મૂલ્યવાન છે. એકવાર મૂળ કારણ મળી જાય પછી, સમાન ભૂલની ડઝનેક ભિન્નતાઓ એક જ સમયે ઉકેલવામાં આવે છે. AI આ સાંકળના તર્કમાં સારું છે: ઇનપુટથી આઉટપુટ સુધીના ડેટાને અનુસરો અને તે ક્યાં તૂટી જાય છે તે વિશે વિચારવા માટે કહો.

ત્રણ નાના કેસો

કેસ 1 — 10 મિનિટમાં 2 કલાકનું કામ. એક વિકાસકર્તાએ બગ શોધવામાં 2 કલાક ગાળ્યા જે ફક્ત ચોક્કસ સેમસંગ મોડલ પર જ ક્રેશ થયું હતું. AI ને ક્રેશ લોગ (વ્યક્તિગત વિસ્તારોને સાફ કરવું) આપ્યો; YZ એ કહ્યું કે ભૂલ એ મેમરી ઓવરફ્લો તરફ નિર્દેશ કરે છે જે તે ઉપકરણના અલગ કેમેરા રિઝોલ્યુશન સાથે થાય છે. ચાવી સાથે 10 મિનિટમાં કારણ જાણવા મળ્યું. AI એ શોધને વેગ આપ્યો, માનવે ઉકેલની ચકાસણી કરી.

કેસ 2 - શાંત ભૂલ પાછી આવી છે. એક ટીમે તેને પકડવા માટે AI સૂચનનો ઉપયોગ કરીને પુનરાવર્તિત ક્રેશને શાંત કર્યો. ક્રેશિંગ બંધ થઈ ગયું, પરંતુ વપરાશકર્તાઓએ ફરિયાદ કરવાનું શરૂ કર્યું કે "ડેટા બચતો નથી"; કારણ કે વાસ્તવિક સમસ્યા (ડેટાબેઝ કનેક્શન) હજુ પણ હતી, તે હમણાં જ અદ્રશ્ય બની ગઈ હતી. એકવાર મૂળ કારણ મળી ગયા પછી, ક્રેશ અને ડેટા નુકશાન બંને ઉકેલાઈ ગયા. પાઠ: મૌન કરવું એ હલ નથી.

કેસ 3 - લોગમાં ડેટા લીક થયો. એક ઓડિટમાં જાણવા મળ્યું કે એપના ક્રેશ લોગમાં યુઝર્સના પૂરા નામ અને ફોન નંબર લખેલા હતા. વિકાસકર્તાઓ નિયમિતપણે આ લોગને AI માં પેસ્ટ કરે છે અને બગ્સ સુધારે છે; તેથી વ્યક્તિગત ડેટા મહિનાઓથી બહાર જતો રહ્યો છે. લૉગ્સ માસ્ક કરવામાં આવ્યા હતા અને પ્રક્રિયાને ઠીક કરવામાં આવી હતી. પાઠ: ડીબગ કરતી વખતે પણ ગોપનીયતા લાગુ પડે છે.

નબળા પ્રોમ્પ્ટ / મજબૂત પ્રોમ્પ્ટ

ખરાબ પ્રોમ્પ્ટ: "આ ભૂલ શા માટે થાય છે? [સ્ટેક ટ્રેસ]"

સ્ટ્રોંગ પ્રોમ્પ્ટ: "મારી એન્ડ્રોઇડ એપ્લિકેશનમાં આ ક્રેશ થઈ રહ્યું છે. સંદર્ભ:- કરતી વખતે: વપરાશકર્તા ઉત્પાદનની વિગતોમાંથી કાર્ટમાં ઉમેરે છે- માત્ર કેટલાક ઉપકરણો પર, ઓછી RAM મોડલ્સ- સંબંધિત કોડ: [વ્યૂમોડલ અને રિપોઝીટરી ભાગ]- ક્રેશ લોગ (વ્યક્તિગત ડેટા સાફ કર્યો): [સ્ટેક ટ્રેસ]3 સૌથી વધુ સંભવિત રૂટ કારણોની સૂચિ: દરેક માટે હું કેવી રીતે રુટ કારણો નક્કી કરું છું. (મૌન નથી) તમારી ધારણા જણાવો જ્યાં તમને ખાતરી ન હોય."

નકલ કરી શકાય તેવા નમૂનાઓ

ક્રેશ વિશ્લેષણ ટેમ્પલેટ: "નીચેના ક્રેશનું વિશ્લેષણ કરો. સંદર્ભ: [તમે શું કરી રહ્યાં છો, કયું ઉપકરણ/સંસ્કરણ]. સંબંધિત કોડ: [કોડ]. ક્રેશ લોગ (વ્યક્તિગત ડેટા સાફ કર્યો): [ટ્રેસ]. 3 સંભવિત મૂળ કારણો અને ચકાસણી + દરેક માટે કાયમી ઉકેલ આપો. મૌનને પણ ચિહ્નિત કરો."

રુટ કોઝ ટેમ્પ્લેટ: "આ મૂલ્ય અણધારી રીતે [નલ/ખોટું] આવે છે. ઇનપુટથી આ બિંદુ સુધી ડેટા ફ્લોને અનુસરો: તે ક્યાં ખોવાઈ શકે છે અથવા બગડી શકે છે? મને કહો કે મારે દરેક તબક્કે ક્યાં તપાસ કરવી જોઈએ. [કોડ]"

લોગ રીડિંગ ટેમ્પ્લેટ: "આ લોગ આઉટપુટનું અર્થઘટન કરો: કઈ ઘટનાઓ ક્રમમાં બની હતી, અસાધારણતા ક્યાં છે, ભૂલ પહેલાનું છેલ્લું સ્વસ્થ પગલું શું હતું? [લોગ — વ્યક્તિગત ડેટા સાફ કર્યો]"

પુનઃઉત્પાદન નમૂનો: "મારે આ ભૂલને વિશ્વસનીય રીતે પુનઃઉત્પાદન કરવા માટે કયા પગલાઓ, ઉપકરણની સ્થિતિઓ અને ડેટાનો પ્રયાસ કરવો જોઈએ? સંભવિતતાના ક્રમમાં ભૂલને ટ્રિગર કરી શકે તેવી શરતોની સૂચિ બનાવો. [વર્ણન]"

સામાન્ય ભૂલો

  • સંદર્ભ-મુક્ત સ્ટેક ટ્રેસ આપવી. સંબંધિત કોડ અને દૃશ્ય વિના, AI સામાન્ય આગાહી કરે છે.
  • લૉગ્સ સાથે AI માં વ્યક્તિગત ડેટા પેસ્ટ કરવું. ગોપનીયતાનો ભંગ; પ્રથમ માસ્ક.
  • લક્ષણ મૌન. ટ્રાય-કેચ સાથે ક્રેશ છુપાવવાથી મૂળ સમસ્યા નીકળી જાય છે અને નવી સમસ્યાઓ સર્જાય છે.
  • પ્રથમ સૂચનને ચકાસ્યા વિના લાગુ કરવું. AI નું નિદાન એક પૂર્વધારણા છે; કોડમાં પુષ્ટિ કરો.
  • ઇમ્યુલેટરમાં તેને પુનઃઉત્પાદિત કરવાનો પ્રયાસ કરી રહ્યાં છીએ. કેટલીક ભૂલો ફક્ત વાસ્તવિક ઉપકરણ/સ્થિતિ પર જ દેખાય છે.
  • સુધારણા પછી ફરીથી પરીક્ષણ ન કરવું. ફિક્સ કદાચ બીજું કંઈક તૂટી ગયું હશે; રીગ્રેશન તપાસો.

સારાંશમાં

એક એવા ક્ષેત્રો કે જ્યાં AI શ્રેષ્ઠ છે તે ક્રેશ લૉગ્સ વાંચી રહ્યું છે અને સંભવિત કારણોને ઉકેલી રહ્યું છે; જ્યારે સંદર્ભ આપવામાં આવે ત્યારે નિદાનની ગુણવત્તામાં ઘણો સુધારો થાય છે. પરંતુ અંતિમ નિદાન અને સુધારણા મનુષ્યનું છે: AI નું સૂચન એક પૂર્વધારણા છે, જે કોડ અને પરીક્ષણમાં ચકાસાયેલ છે. ઉદ્દેશ્ય લક્ષણને શાંત કરવાનો નથી પરંતુ મૂળ કારણને ઉકેલવાનો છે; મૌન ભૂલ સામાન્ય રીતે અન્ય સ્વરૂપમાં પાછી આવે છે. ક્રેશ લોગમાં વ્યક્તિગત ડેટા હોઈ શકે છે; AI ને આપતા પહેલા તેને માસ્ક કરો અને શરૂઆતથી તમારા લોગમાં વ્યક્તિગત ડેટા લખશો નહીં.

એપ્લિકેશન કાર્ય

તમારી પાસેનો ક્રેશ લોગ લો (અથવા તમે AI માંથી જનરેટ કરો છો તે નમૂના), તેમાં કોઈપણ વ્યક્તિગત/વિશિષ્ટ ડેટાને માસ્ક કરો અને તેને "ક્રેશ એનાલિસિસ ટેમ્પલેટ" સાથે AI ને આપો. એઆઈ સૂચિઓમાંથી કયા મૂળ કારણો વાસ્તવિક સુધારાઓ છે અને જે ફક્ત સાયલન્સિંગ છે તે ઓળખો. તમે પસંદ કરેલ કાયમી સુધારણા લાગુ કરો અને ચકાસો કે ભૂલ દૂર થઈ ગઈ છે અને કોઈ નવી સમસ્યા ઊભી થતી નથી.

ચેકલિસ્ટ

  • [ ] મેં સંબંધિત કોડ અને દૃશ્ય સંદર્ભ સાથે ક્રેશ લોગ આપ્યો છે
  • [ ] મેં લૉગમાં વ્યક્તિગત/વિશિષ્ટ ડેટાને માસ્ક કર્યો છે
  • [ ] મેં AI ને મૂળ કારણ અને કાયમી ઉકેલ માટે પૂછ્યું, મૌન નહીં
  • [ ] મેં કોડ અને પરીક્ષણમાં નિદાનની ચકાસણી કરી છે, મેં તેને આંખ આડા કાન કર્યા નથી
  • [ ] ફિક્સ કર્યા પછી, મેં પરીક્ષણ કર્યું કે ભૂલ દૂર થઈ ગઈ હતી અને ત્યાં કોઈ રીગ્રેશન નથી
  • [ ] મેં તપાસ કરી છે કે મારી એપ્લિકેશન તેના લોગમાં વ્યક્તિગત ડેટા લખતી નથી