--- wp-includes/functions.php	
+++ wp-includes/functions.php	
@@ -3688,8 +3688,15 @@
 	$caller = array();
 	$check_class = ! is_null( $ignore_class );
 	$skip_frames++; // skip this function
+	$last_info = array();
 
 	foreach ( $trace as $call ) {
+		if ( isset( $call['class'] ) && 'wpdb' == $call['class'] )
+		{
+			$last_info['file'] = basename($call['file']);
+			$last_info['line'] = $call['line'];
+		}
+
 		if ( $skip_frames > 0 ) {
 			$skip_frames--;
 		} elseif ( isset( $call['class'] ) ) {
@@ -3697,6 +3704,7 @@
 				continue; // Filter out calls
 
 			$caller[] = "{$call['class']}{$call['type']}{$call['function']}";
+			if( empty( $last_info['func'] ) ) $last_info['func'] = $call['class'].'->'.$call['function'];
 		} else {
 			if ( in_array( $call['function'], array( 'do_action', 'apply_filters' ) ) ) {
 				$caller[] = "{$call['function']}('{$call['args'][0]}')";
@@ -3704,11 +3712,13 @@
 				$caller[] = $call['function'] . "('" . str_replace( array( WP_CONTENT_DIR, ABSPATH ) , '', $call['args'][0] ) . "')";
 			} else {
 				$caller[] = $call['function'];
+				if( empty( $last_info['func'] ) ) $last_info['func'] = $call['function'];
 			}
 		}
 	}
 	if ( $pretty )
-		return join( ', ', array_reverse( $caller ) );
+		return sprintf(__("Error at %s, at line %d, in function %s<br/>%s"), 
+				$last_info['file'], $last_info['line'], $last_info['func'], join( ', ', array_reverse( $caller ) ) );
 	else
 		return $caller;
 }
