Home > Aplikasi Desktop, Tutorial > Debug Program Mcu8051ide di Linux Ubuntu

Debug Program Mcu8051ide di Linux Ubuntu

Program mcu8051ide yang telah terinstall di Ubuntu saya tidak bisa dijalankan. Program akan keluar, setelah loading logonya.

Program ini merupakan IDE (integrated development environment) untuk mikrokontroler keluarga 8051.  mcu8051ide ini berisi simulator, editor kode (C dan Asm), assembler, programmer HW dan simulasi hardware seperti LED, LED panel, keypad matrik, dll. Simulator mendukung hingga 79 MCU terutama dari Atmel.

Sayangnya, program ini tidak dapat dijalankan di Ubuntu Lucid. Error ada di kode tclnya (file /usr/share/mcu8051ide/lib/editor/spell_check.tcl). Berikut yang saya lakukan untuk mencari sumber error dan mendebugnya.



Variabel “flag_icon” belum terdeklarasi:


Initializing MCU 8051 IDE 1.4.1
Loading libraries ... 291 ms
Loading program sources can't read "flag_icon": no such variable
while executing
"list $language_code $country_code [mc $country_name] [mc $language_name] $flag_icon"
(procedure "::Editor::refresh_available_dictionaries" body line 130)
invoked from within
"::Editor::refresh_available_dictionaries "
invoked from within


Cari-cari variabel flag_icon ini dipanggil di file mana, dengan menggunakan grep, didapat kalau variabel dipanggil di file /usr/share/mcu8051ide/lib/editor/spell_check.tcl.

Prosedur spell_check ini digunakan oleh mcu8051ide sebagai spell checker. Program spelling yang digunakan adalah Hunspell. Jadi problem bisa jadi di hunspell-nya atau di mcu8051ide.

Di program mcu8051ide, terutama file spell_check.tcl, variabel flag_icon dipanggil oleh prosedur refresh_available_dictionaries{}

proc refresh_available_dictionaries {} {
...
set idx [lsearch -ascii -exact -index 1 ${::Editor::COUNTRY_CODES_AND_FLAGS} $country_code]
if {$idx != -1} {
set country_and_flag [lindex ${::Editor::COUNTRY_CODES_AND_FLAGS} $idx]
set country_name [lindex $country_and_flag 0]
set flag_icon [lindex $country_and_flag 2]
} else {
set country_name $country_code
}
if {$flag_icon == {}} {
set flag_icon {empty}
}
...
}

Sebelum mengedit file tersebut, lebih baik cek hunspell apakah telah terinstall di uBuntu atau tidak. Dan hunspell telah terinstall dan ok. Dan hunspell-dictionary (hunspell-en-ca dan hunspell-en-us) juga telah terinstall. Tapi mengapa kondisional di kode atas tidak terpenuhi sehingga variabel flag_icon undefined? Apakah definisi COUNTRY_CODES_AND_FLAGS yang belum lengkap, sehingga $idx = -1?

Cara cepat (dan dirty) adalah menambah baris kode berikut:

proc refresh_available_dictionaries {} {
...
set idx [lsearch -ascii -exact -index 1 ${::Editor::COUNTRY_CODES_AND_FLAGS} $country_code]
if {$idx != -1} {
set country_and_flag [lindex ${::Editor::COUNTRY_CODES_AND_FLAGS} $idx]
set country_name [lindex $country_and_flag 0]
set flag_icon [lindex $country_and_flag 2]
} else {
set country_name $country_code
set flag_icon {}
}
if {$flag_icon == {}} {
set flag_icon {empty}
}
...
}

Setelah mengedit file, program mcu8051ide dijalankan. Program bisa berjalan, tapi tanpa dukungan hunspell (spell checker). Tidak mengapa, asal bisa jalan dulu… spell checker opsional.

  1. No comments yet.
  1. No trackbacks yet.
*

This blog is kept spam free by WP-SpamFree.

Skip to toolbar