**Erarserĉilo** aŭ **sencimigilo** estas komputila programo kiun oni uzas por sencimigi aliajn komputilajn programojn, do malkovri la kaŭzon de eraro kaj korekti tiujn erarojn. La maŝina kodo, kiun oni sencimigas, povas esti plenumata en tiel nomata "simulilo de ordonaro"", kio ebligas haltigi programon preskaŭ en ĉiu loko kaj sub ajnaj antaŭdifinitaj kondiĉoj, sed la plenumo de la kodo povas estis multoble pli malrapida, ol se oni rekte plenumas la kodon ĉe procesoro.

Se iu programo ĉesas funkcie neatendite kaj produktas iun erarmesaĝon aŭ iun escepton, tiam la erarserĉilo povas indiki la pozicion en la fontkodo, kiu estis plenumita la plej lasta. Tiujn sencimigilojn oni nomas **fontnivelajn sencimigiloj**, aŭ **simbolaj sencimigiloj** ("simbola" signifas ĉi tie, ke ĝi kapablis trovi la originan "simbolon" en la fontokodo, kiu kondukas al la problemo en la kompilita kodo. Kutime **fontonivelaj sencimigiloj** estas parto de integra evuiga medio. Kutime tiuj sencimigiloj ofertas pliajn opciojn por efektive kaj rapide trovi kaj korekti programajn erarojn, ekzemple oni povas plenumi programon linion post linio, oni povas difini specialajn haltopunktojn, kie la kuro de programo devas esti haltigita. Tiu sencimigilo estas nedisŝirebla parto de integra evoluiga medio (IDE), kaj pro tio donas eblecon montri sisteman informon dum kurtempo kaj momentajn valorojn de programaj variabloj. Ĉe kelkaj (ĉefe interpretaj komputillingvoj sencimigiloj ankaŭ ebligas tujan ŝanĝon de la kodo kaj plenumas post la halto jam korektitan fontokodon.

Plia tipo de sencimigilo estas **malaltnivela sencimigilo** aŭ **sencimigilo de maŝina kodo**, kiu malkompilas ĉiun ordonon de maŝina kodo.

Sencimigilo faciligas la serĉadon de eraroj en programo, pro tio la disponebleco de bona erarserĉilo por specifa programlingvo kaj platformo povas esti grava argumento por uzi tiun lingvon. La uzado de erarserĉilo ja havas konsekvencojn se temas pri kiel la sencimigata programo sin kondutas. Konkrete la temposkemo de specifaj paŝoj povas
devii de normala plenumado. Tio malfaciligas trovi problemkaŭzojn en komplikaj programoj.

Sencimigiloj, kiuj estas integritaj en IDE havas specialan aspekton (*front-end*), kiu ebligas uzon de sencimigaj funkcioj kaj krome aldonas funkciojn por grafike bildigi la proceson.

Alternativo por uzado de erarserĉilo estas la metado de protokolaj instrukcioj en programo, por ke dum la plenumado de programo estu komprenebla kio estas la valoroj de specifaj variabloj. Tiu ĉi metodo estas malkonciza kaj havas la ĉefan malavantaĝon ke por ĉiu sekvenda variablo estas bezonata aparta protokola instrukcio.

Listo de sencimigiloj
---------------------

* CA/EZTEST (Cics Interactive test/debug)
* CodeView
* DAEDALUS
* DBG - Sencimigilo por PHP kun profiligilo
* dbx
* DDD, Data Display Debugger
* DEBUG DOS-ordono
* DŭDebugger[*rompita ligilo*] — Debugger Disassembler for Windows 64-bit
* Eclipse
* GoBug simbola sencimigilo por Vindozo
* GNU Debugger (GDB)
* Insight
* Interactive Disassembler (IDA Pro)
* Java Platform Debugger Architecture
* JSwat, malfermkoda sencimigilo por Java
* MacsBug
* OLIVER (CICS interactive test/debug)
* OllyDbg
* IBM Rational Purify
* sdb
* SIMMON (Simulation Monitor)
* SIMON (Batch Interactive test/debug)
* SoftICE
* Turbo Debugger
* WinDbg
* Valgrind
* VB Watch Debugger por Visual Basic 6.0
* Microsoft Visual Studio Debugger
* XSLT kaj XQuery sencimigiloj en Oxygen XML Editor

Eksteraj ligiloj
----------------

* **(en)** Lernu la esencon de sencimigado Kiel plibonogi viajn sencimigajn kapablojn, artikolo ĉe IBM developerWorks.
* **(en)** OpenRCE: Diversaj sencimigiloj kaj ties aldonaĵoj Arkivigite je 2008-08-28 per la retarkivo Wayback Machine