//-------------------------------------------------------------------------- void linux_debmod_t::tdb_delete(void) { if ( ta != NULL ) { td_ta_delete(ta); ta = NULL; } }
// read thread_info using libthread_db bool read_thread_info(struct ps_prochandle* ph, thread_info_callback cb) { struct thread_db_client_data mydata; td_thragent_t* thread_agent = NULL; if (td_ta_new(ph, &thread_agent) != TD_OK) { print_debug("can't create libthread_db agent\n"); return false; } mydata.ph = ph; mydata.callback = cb; // we use libthread_db iterator to iterate thru list of threads. if (td_ta_thr_iter(thread_agent, thread_db_callback, &mydata, TD_THR_ANY_STATE, TD_THR_LOWEST_PRIORITY, TD_SIGNO_MASK, TD_THR_ANY_USER_FLAGS) != TD_OK) { td_ta_delete(thread_agent); return false; } // delete thread agent td_ta_delete(thread_agent); return true; }
void mono_debugger_thread_db_destroy (ThreadDbHandle *handle) { td_ta_delete (handle->thread_agent); g_free (handle); }