) ▁as ▁well ▁as ▁low - level ▁software ▁( e . g ., ▁B IOS es , ▁device ▁drivers ) ▁and ▁firm ware , ▁instruments ▁such ▁as ▁oscill os cop es , ▁logic ▁analyz ers , ▁or ▁in - circ uit ▁em ul ators ▁( ICE s ) ▁are ▁often ▁used , ▁alone ▁or ▁in ▁combination . ▁An ▁I CE ▁may ▁perform ▁many ▁of ▁the ▁typical ▁software ▁debugger ' s ▁tasks ▁on ▁low - level ▁software ▁and ▁firm ware . ▁ ▁Debug ging ▁process ▁Norm ally ▁the ▁first ▁step ▁in ▁debugging ▁is ▁to ▁attempt ▁to ▁reproduce ▁the ▁problem . ▁This ▁can ▁be ▁a ▁non - t rivial ▁task , ▁for ▁example ▁as ▁with ▁parallel ▁processes ▁and ▁some ▁He isen bug s . ▁Also , ▁specific ▁user ▁environment ▁and ▁usage ▁history ▁can ▁make ▁it ▁difficult ▁to ▁reproduce ▁the ▁problem . ▁ ▁After ▁the ▁bug ▁is ▁reprodu ced , ▁the ▁input ▁of ▁the ▁program ▁may ▁need ▁to ▁be ▁simplified ▁to ▁make ▁it ▁easier ▁to ▁debug . ▁For ▁example , ▁a ▁bug ▁in ▁a ▁compiler ▁can ▁make ▁it ▁crash ▁when ▁parsing ▁some ▁large ▁source ▁file . ▁However , ▁after ▁simpl ification ▁of ▁the ▁test ▁case , ▁only ▁few ▁lines ▁from ▁the ▁original ▁source ▁file ▁can ▁be ▁sufficient ▁to ▁reproduce ▁the ▁same ▁crash . ▁Such ▁simpl ification ▁can ▁be ▁made ▁manually , ▁using ▁a ▁divide - and - con quer ▁approach . ▁The ▁programmer ▁will ▁try ▁to ▁remove ▁some ▁parts ▁of ▁original ▁test ▁case ▁and ▁check ▁if ▁the ▁problem ▁still ▁exists . ▁When ▁debugging ▁the ▁problem ▁in